Я использую rsync для синхронизации содержимого моего локального компьютера с сервером, и если вы просто развертываете на одном сервере, то это довольно просто (и Capistrano излишний.).Я поместил следующие псевдонимы в ~/.bash_profile
:
alias eget='rsync -avie ssh matt@example.com:sites/example.com/www/ ~/Projects/example/example.com/www/ --exclude .DS_Store --exclude ".git*" --delete-after'
alias edep='rsync -avuie ssh ~/Projects/example/example.com/www/ matt@example.com:sites/example.com/www/ --exclude .DS_Store --exclude ".git*" --delay-updates --delete-after'
Затем из репозитория git на моей локальной машине.Я делаю:
git commit -am 'commit some changes'
git pull --rebase # pull any new changes from remote (--rebase prevents an unnecessary merge commit.)
eget -n # confirm which files I've changed
Если это выглядит подозрительно, я мог бы сделать eget
без -n и затем просто сделать git diff -w
.Затем я могу сделать git checkout -- path/to/file
для файлов, для которых я хочу сохранить свои изменения.Затем я фиксирую изменения, которые были на сервере, которые я еще не получил.Это произойдет только в том случае, если файлы на сервере изменяются не так, как при развертывании.В противном случае вы знаете, что ваша локальная версия всегда более актуальна, чем файлы на сервере, и поэтому вам не нужно беспокоиться о перезаписи вещей на сервере, которых у вас еще нет на вашем локальном компьютере.Продолжить ...
edep -n # just see what files will be deployed/updated/etc.
edep # looks good. Deploy for real.
Готово!
Посетите страницу руководства rsync (1) Mac OS X для получения дополнительной информации.
Другойопция заключается в использовании Git post-receive hook .Но для этого вам нужно установить Git на сервере.Кроме того, я рекомендую размещать каталог .git
вне общедоступного каталога www
из соображений безопасности и чистоты.Вы можете сделать это с помощью опции конфигурации Git core.worktree
.Например, с ~/git/example.com.git
, сделайте git init --bare; git config core.worktree ~/sites/example.com/
.Это делает ~/git/example.com.git
как .git
dir для ~/sites/example.com/
.