Как передать git-клон в архив (tar или gzip) - PullRequest
11 голосов
/ 13 мая 2011

Я пытаюсь сделать простой скрипт резервного копирования для моих удаленных репозиториев git.В сценарии у меня есть несколько строк, которые в настоящее время выглядят так:

git clone git@server:repo.git $DEST
tar czvf repo.tgz $DEST
rm -rf $DEST

Есть ли способ, чтобы все это происходило в одной строке?Могу ли я передать клон git в команду tar?Мне не нужен клонированный каталог, я просто хочу его сжатый архив.

Я пробовал несколько экспериментов, но, похоже, не могу понять синтаксис.

Ответы [ 2 ]

13 голосов
/ 13 мая 2011

Нет, вы не можете просто передать git clone, потому что он не записывает его в стандартный вывод.А зачем тебе однострочный?Они отлично подходят для того, чтобы похвастаться тем, что вы можете сделать что-то крутое в одной строке, но не совсем идеально в реальном мире.

Вы можете сделать что-то вроде ниже, но вы не получите .git, как вы бы вgit clone:

git archive --format=tar --remote=git@server:repo.git master | tar -xf -

С git archive инструкция

--remote=<repo>

    Instead of making a tar archive from the local repository, retrieve a tar archive from a remote repository.
4 голосов
/ 13 мая 2011

Вы можете использовать git archive для этой цели с опцией --remote.Вы можете передать это, чтобы создать почтовый индекс или tar, или что угодно.

http://www.kernel.org/pub/software/scm/git/docs/git-archive.html

...