Git / Gitolite: перемещение репо после настройки Gitolite - PullRequest
6 голосов
/ 15 августа 2011

Я нахожусь на финальной стадии работы с Git и Gitolite.Это текущая ситуация:

enter image description here

Ответы [ 2 ]

5 голосов
/ 15 августа 2011

Репозитории под управлением Gitolite не имеют рабочих копий. Итак, вам нужно создать другие репозитории с рабочими копиями, зафиксировать данные и передать их в управляемые гитолитами. Проще всего сделать это на сервере напрямую. Поэтому в каждом из www каталогов выполните:

cd /home/X/www
git init
git remote add origin /home/gitolite/repositories/X.git
git add .
git commit
git push origin

Теперь у вас есть данные в репозиториях, что было самой легкой частью. Я предполагаю, что одна и та же учетная запись пользователя имеет доступ как к репозиториям gitolite, так и к данным сервера (как вы сказали в чате), что значительно облегчает проблему.

Теперь у репозиториев нет альтернатив, поэтому у вас есть две копии данных. Для их удаления, вероятно, проще всего сделать для каждого сайта:

cd /home/X
git clone -s /home/gitolite/repositories/X.git www.new
mv www www.old
mv www.new www
rm -r www.old

(опция -s для клонирования гарантирует, что репозиторий /home/X/www/.git не будет копировать данные из /home/gitolite/repositories/X.git). И, наконец, вы должны установить крюк. Это уже объяснено в этом вопросе , но ваша ситуация немного проще. Поскольку данные находятся на одном сервере и под одним и тем же пользователем, вы можете просто установить хук после обновления во всех репозиториях gitolite, содержащих только:

#!/bin/sh
cd /home/X/www
git pull

Если вы когда-нибудь захотите переместить репозитории и веб-сервер на отдельные серверы (что я бы порекомендовал, потому что веб-сервер, если он обращен наружу, должен находиться в «демилитаризованной зоне», тогда как сервер git лучше в вашей внутренней сети за другой линией брандмауэров) вам, конечно, понадобится триггер ssh, описанный в этом другом вопросе.

1 голос
/ 15 августа 2011

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

Процесс должен идти примерно так:

git clone gitolite:a.git
# Message about copying an empty repo
cp -R a/.git/ /your/home/directory/a

После того, как вы скопировали его, вы должны настроить .gitignore, если необходимо, и добавить / зафиксировать его, затем сделать git add . и что-то вроде git commit -m "initial commit", затем git push origin master, и он заполнит пустой репо.

...