Как передать список файлов в команду linux zip - PullRequest
5 голосов
/ 10 апреля 2010

Я использую Git для контроля версий и, в отличие от SVN, я не сталкивался с внутренним средством экспорта измененных файлов между двумя ревизиями, ветками или тегами.

В качестве альтернативы я хочу использовать команду linux zip и передать ей набор имен файлов, однако имена файлов являются результатом другой команды git diff. Ниже приведен пример того, чего я пытаюсь достичь:

zip /home/myhome/releases/files.zip git diff --name-only -a 01-tag 00-tag

Однако вышеприведенное не работает, так как я предполагаю, что команда 'zip' рассматривает операцию git как часть своих параметров команды.

Кто-нибудь знает, как я могу заставить что-то подобное работать?

Спасибо

Ответы [ 2 ]

6 голосов
/ 10 апреля 2010

Вам необходимо выполнить команду git в под-оболочке:

zip /home/myhome/releases/files.zip `git diff --name-only -a 01-tag 00-tag`
# another syntax (assuming bash):
zip /home/myhome/releases/files.zip $(git diff --name-only -a 01-tag 00-tag)

Другой вариант - команда xargs :

git diff --name-only -a 01-tag 00-tag | xargs zip /home/myhome/releases/files.zip
3 голосов
/ 06 августа 2010

Если вы находитесь в git shell (bash), вы также можете сделать это:

git diff -–name-only commit1 commit2 | zip ../Changes.zip –@

Работает для меня в системах на базе Windows и Unix.

...