Попытка получить rsync для копирования файлов обратно в SVN - PullRequest
2 голосов
/ 02 октября 2009

Я пытаюсь настроить определенный рабочий процесс, но не могу понять, как (или если) rsync будет работать для этого.

Моя настройка на Mac OS X.

У меня есть каталог SVN. Когда я запускаю сценарий развертывания, файлы перемещаются на мой сервер Apache интеграции. Я выполняю свои модификации файлов, затем вручную копирую их обратно в SVN.

Причина, по которой я это сделал, заключается в том, что мне нужно немедленно увидеть изменения в браузере, когда я редактирую html, css и javascript. Но попытки скопировать и отследить это занимают много времени, и я хочу автоматизировать это.

Я хочу использовать rsync, чтобы определить файлы, которые я изменил, в веб-каталоге Apache, а затем скопировать эти файлы обратно в SVN.

У меня есть команда rsync, которую я тестировал, но проблема, с которой я сталкиваюсь, заключается в том, что, поскольку временные метки развернутых файлов новее, чем в SVN, rsync хочет скопировать все файлы обратно, потому что он видит их как новые файлы.

Я также экспериментировал с diff, и он обнаружил различия в файлах. Я полагаю, что могу собрать сценарий оболочки, который может использовать комбинацию diff, grep и cp для выполнения этой работы, но я хотел посмотреть, может ли rsync быть решением «все в одном».

rsync -avuzn --exclude=web-inf/classes/ --exclude=web-inf/lib/ /var/www/web-inf /usr/local/src/svn/WEB-INF

Ответы [ 4 ]

3 голосов
/ 02 октября 2009

Рекомендую иметь подрывную проверку прямо на веб-сервере. Вы должны добавить директиву Deny для всех Файлов с именем .svn, чтобы удаленные пользователи не распознали это как извлечение Subversion.

0 голосов
/ 07 октября 2011

Я также экспериментировал с автоматическим развертыванием и после того, как написал свой собственный rsync-скрипт ... (простой в использовании, но требовательный к установке, я наткнулся на DeployIt ... Попробуйте ...

http://deployit.monavari.de/

0 голосов
/ 02 октября 2009

Что я не понимаю здесь, это то, что именно вы делаете? Вообще говоря, вы должны разрабатывать на своем компьютере. Ваш svn-репозиторий должен находиться в вашем каталоге сайтов, чтобы вы могли просматривать сайт в реальном времени в вашем браузере через localhost. Я использую Rails с git таким же образом. Мой локальный рубиновый сервер переходит на localhost: 3000, и я могу развиваться и постоянно видеть, что я делаю. Затем, когда мое кодирование достигает приличного уровня, я обязуюсь выполнить git и развернуть его на своем тестовом сервере. Когда сайт готов, он переходит в производственную среду. Когда я пишу код в php / mysql, я тестирую на своем локальном локальном сервере apache, а затем, когда все готово, напрямую перехожу по ftp на тестовый или рабочий сервер.

Вот как вы должны работать. Нет причин копировать материал обратно с ваших тестовых или производственных серверов. И ваша система контроля версий должна выполнять всю синхронизацию. Разрабатывайте локально, тестируйте удаленно, затем развертывайте в производство. Это лучший способ сделать это.

0 голосов
/ 02 октября 2009

Вы не говорите, как ваш сценарий развертывания перемещает файлы на сервер интеграции, и не совсем ясно, задействовано ли более одного компьютера или какая файловая система используется для файлов сервера интеграции. Если сценарий работает правильно, вы можете сохранить время модификации файлов, когда файлы были первоначально отправлены. Поскольку вы можете использовать rsync, чтобы вернуть их, не можете ли вы также использовать rsync для их отправки? За исключением этого, scp -p - это еще один способ передачи с сохранением многих атрибутов.

Этот вид рабочего процесса, тем не менее, звучит специально для распределенной системы управления версиями, например mercurial или git .

...