У меня есть git-репозиторий, и я хочу rsync для конкретной ревизии репозитория в каталог.В основном я хочу сделать это:
$ cd my-git-repo
$ git archive $MY_COMMIT > ~/blah.tar.gz
$ mkdir ~/tmp
$ cd ~/tmp
$ tar xf ~/blah.tar.gz
$ rsync -a ~/tmp/ ~/final-destination
$ cd
$ rm -r tmp
Проблема с этим заключается в том, что он требует извлечения во временный каталог и повторной синхронизации из этого.Это (теоретически) не нужно и с огромным git-репозиторием занимает много времени и требует много свободного места.Я не просто хочу очистить ~ / final-destination и tar прямо в него с помощью:
$ git archive $MY_COMMIT | tar x -C ~/final-destination
, потому что это также требует много ненужной работы, особенно если ~ / final-destination является удаленным каталогом.Другим вариантом может быть извлечение конкретной ревизии и rsync непосредственно из хранилища:
$ git checkout $MY_COMMIT
$ rsync -a --exclude .git my-git-repo/ ~/final-destination
, но я бы не стал связываться с рабочим каталогом хранилища.Я хочу сделать все это в сценарии, который может работать в фоновом режиме, пока я делаю вещи в репозитории.
Итак.Есть ли способ rsync напрямую из определенной ревизии репозитория.Или, в случае неудачи, я могу каким-то образом rsync из архива tar не распаковывать его?