2011-05-13 54 views
8

我正在嘗試爲我的遠程託管的git回購做一個簡單的備份腳本。在腳本中,我有幾行目前看起來像這樣:如何管理一個git克隆進行存檔(tar或gzip)

git clone [email protected]:repo.git $DEST 
tar czvf repo.tgz $DEST 
rm -rf $DEST 

有沒有辦法讓這一切都發生在一行?我可以將git clone克隆到tar命令中嗎?我不需要克隆的目錄,我只想要它的壓縮存檔。

我試過一些實驗,但似乎無法弄清楚語法。

回答

11

不,你不能只管git clone,因爲它不寫出標準輸出。爲什麼你需要一個班輪?他們誇耀你可以在一行中做一些很酷的事情,但在真實世界中並不是很理想。

你可以不喜歡以下,但你不會在git clone得到.git,就像您:

git archive --format=tar [email protected]: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. 
+3

的'--remote'選項'混帳archive'要求服務器啓用了允許它的選項。默認情況下,它未啓用。 – Arrowmaster 2011-05-13 21:59:30

+0

如果我理解正確,git archive只能用作git repo中包含的文件的備份。對?我想要做的是創建回購的完整備份以及其中包含的所有版本信息。所以我想我仍然想使用git clone。 – 2011-05-14 04:28:13

+0

至於在一條線上做,是的,它肯定是「酷」。不過,我也試圖阻止克隆一個大回購,然後複製它的壓縮。然後刪除該副本。我試圖對磁盤寫入效率很高,但既然你聲明git clone不是標準輸出,我想我只需要按照我之前計劃的那樣去做。 – 2011-05-14 04:32:06