git архив vs cp -R - PullRequest
       45

git архив vs cp -R

4 голосов
/ 17 декабря 2008

Если у меня есть клон репозитория git в качестве кэшированной копии на удаленном сервере для развертывания в стиле capistrano / vlad, лучше сделать A)

git archive --format=tar origin/master | (cd #{destination} && tar xf -)

или B)

cp -R cached-copy #{destination} && rm -Rf #{destination}/.git

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

Ответы [ 4 ]

8 голосов
/ 17 декабря 2008

Я бы сказал, на самом деле

rsync -avP /local/repo/* server:/remote/repo

Это работает, пока все в порядке с пропускает все точечные файлы в репо, а не только .git Если вы хотите пропустить only .git, вам понадобится опция -f и справочная страница.

Я люблю Rsync . Прекрасно работает, и в большинстве случаев вы можете использовать его так же, как вы используете scp!

3 голосов
/ 18 декабря 2008

Ни!

Лучший способ сделать это:

  • git fetch ваш кеш
  • Клонировать кэш в текущий каталог (с включенными опциями --no-checkout)
  • Оформите коммит, который вы хотите.

Когда вы делаете локальный клон, Git использует жесткие ссылки. Это означает, что до тех пор, пока вы не измените файл, который вам не нужен, вы можете иметь 1000 развертываний и использовать (виртуально) только то пространство, которое потребуется для одного. Этот способ также значительно ускоряет архивирование или rsync.

3 голосов
/ 17 декабря 2008

A)

Вы сохраняете сетевые накладные расходы на передачу каталога .git, который может быть довольно большим, в зависимости от того, сколько истории и объектов нет в текущем HEAD.

Если вы когда-нибудь хотели иметь настоящий git-репозиторий на удаленном конце, вам лучше перейти в реальный репозиторий и только изменить дельты.

2 голосов
/ 17 декабря 2008

Также кто-то, возможно, уже написал ваш код для вас.

Vigetlab's capistrano_rsync_with_remote_cache

Я использую это с Subversion, и он хорошо работает для меня.

...