2013-11-25 3 views
1

Можно ли экспортировать только файлы из одной версии из удаленного репозитория Git? В Subversion, мы можем легко сделать это:Git экспорт точно так же, как экспорт SVN

svn export https://some.website.com/trunk/app/[email protected] --username=user --password=pass --force -r 5317 ./build/trunk/app 

Это даст мне только те файлы, которые были изменены в ревизии 5317 и больше ничего. Почему это невозможно в Git?

Примечание: Я уже прочитал How to do a “git export” (like “svn export”), но все ответы касаются некоторых вариантов клонирования целого хранилища. Мне не нужно полное дерево работы. Мне просто нужно несколько файлов. Мой репозиторий - 4,5 гигабайта, а моя система сборки FTP, размещенная на виртуальной плате за входящие и ограниченное дисковое пространство. Любая помощь оценивается.

+1

- Вы уверены, что это не дает вам файлы, которые присутствовали в ревизии 5316 и не изменились в версии 5317? – hvd

ответ

0

Это даст мне только те файлы, которые были изменены в ревизии 5317 и больше ничего. Почему это невозможно в Git?

Там нет кнопки для него, потому что git fetch или любого из нескольких других способов GIT лучше, но демпинг все содержимое файлов изменяемых фиксации является

git clone --no-checkout . ../scratch  # dirt cheap 
(cd ../scratch 
    git diff-tree --name-only -r commit^! | xargs git checkout commit -- 
    git ls-files | tar czTf - ../export.tgz 
) 
rm -rf ../scratch 

мерзавец способ сделать минимальные получения фидов является начинайте с мелкого клона. Это возможно сделать в ex post facto, и даже избежать чего-либо в объекте db вообще, но если дисковое пространство не находится в какой-то смешной премии, git способ сделать это с вашего удаленного сайта:

git clone --depth=1 -b mainbranch u://r/l 

и с тех пор, как раз

git pull 

, чтобы не отставать от современных

+0

Спасибо jthill, это было именно то, что я искал –

1

См. man git-archive.

См. Также this related question.

После этого, вы можете делать то, что вы хотите, например:

git archive --remote=<repo> --output=repo-master.zip master 
+0

-1 потому что git-архив не работает на удаленном репо, для этого требуется клонировать. – hvd

+0

На странице man для git-архива я вижу параметр --remote со следующим объяснением: --remote = Вместо того, чтобы создавать tar-архив из локального репозитория, извлеките архив tar из удаленного репозитория. Я использую 1.8.4.3. Справедливости ради, я не знал, что, когда я впервые ответил, просто проверил man-страницу, когда увидел ваш комментарий. Может, что-то добавилось недавно? – elmart

+0

См. [Это] (http://stackoverflow.com/questions/13750182/git-how-to-archive-from-remote-repository-directly) тоже. – elmart

0

вы можете использовать этот инструмент https://github.com/hegoku/git-export, установить его и, если вы хотите экспортировать измененные файлы между двумя фиксаций к папка:

$ git-export -o /home/path_of_folder commit_1 commit_2 

или если вы просто хотите экспортировать измененные файлы из конкретных фиксации в папку: «Это даст мне только те файлы, которые были изменены в правке 5317 и больше ничего»

$ git-export -o /home/path_fo_folder commit_1 
Смежные вопросы