Как автоматизировать git для автоматического клонирования репо на сервере? - PullRequest
3 голосов
/ 01 марта 2010

У меня есть репо, в котором я хочу публиковать изменения. Я хочу синхронизировать два репозитория: ./pages.git в ./pages. Моя настройка git на моей машине разработки переходит в pages.git. Но веб-приложение работает с ./pages.

git clone pages.git pages
fatal: destination path 'pages' already exists and is not an empty directory.

Хорошо, теперь я удаляю каталог страниц и git clone работает. Но это не чистое решение, не так ли?

Есть ли способ сделать это без необходимости вручную удалять каталог страниц? Я бы хотел автоматизировать этот процесс, чтобы git автоматически выполнял действия при каждом нажатии.

Лучший, Мариус

Ответы [ 2 ]

4 голосов
/ 01 марта 2010

Почему бы просто не создать хук после получения для репозитория pages.git, который будет выполнять git pull из репозитория pages, чтобы перенести изменения? git clone предназначен для запуска только один раз для каждого полученного клона (следовательно, почему он жалуется, пока вы не удалите предыдущий клон), тогда как git pull предназначен для многократного запуска всякий раз, когда вы хотите обновить репо с изменениями другого. *

У меня есть настройка ловушки для чего-то, по сути, такой же, как эта, с определенным хранилищем, вот суть этого:

cd /var/repos/path_to_mirror || exit
unset GIT_DIR
git pull origin master
  • В этом случае path_to_mirror является эквивалентом pages в вашей ситуации.
  • Этот скрипт будет в файле pages.git/.git/hooks/post-receive.
0 голосов
/ 01 марта 2010

В моем понимании вы работаете над local копией, нажмите на pages.git и получите копию для webapp?

Если это так, вы можете использовать post-receive ловушку на pages.git, которая вызовет git pull на pages или сделать простую копию на pages.

Хук

Post-receive работает на удаленном репо после пуша от локального. Это выполняется после все ссылки были обновлены в связи с push.

...