2008-12-17 37 views
4

如果我有一個Git倉庫作爲Capistrano的/弗拉德風格部署在遠程服務器上緩存副本的克隆,是它更好地做到A)git的存檔VS CP -R

git archive --format=tar origin/master | (cd #{destination} && tar xf -) 

或B)

cp -R cached-copy #{destination} && rm -Rf #{destination}/.git 

爲了澄清,該庫已經在遠程服務器上,我只是想在部署期間的特定版本複製到發佈目錄在同一臺服務器上。

+0

我無法編輯,但第一句末尾有一個錯字。它應該是「應該做的更好」,據推測。 – Otto 2008-12-17 04:54:49

+0

更正了錯字...謝謝 – ottobar 2008-12-17 05:10:56

回答

8

我想說其實

rsync -avP /local/repo/* server:/remote/repo 

這個工作,只要它是確定跳過所有的點文件在回購,不僅.git。如果您只想跳過.git那麼您需要-f選項和手冊頁。

我愛rsync。作品很棒,大多數時候你可以像使用scp一樣使用它!

3

A)

節省傳輸.git目錄這有可能是相當大的取決於有多少歷史和當前HEAD對象沒有的網絡開銷。

如果你曾經想要在遠程端擁有一個實際的git倉庫,你最好把它推到一個真實的倉庫,而只需要改變增量。

3

兩者都不!

這樣做的更好的方法是:

  • git fetch緩存
  • 克隆緩存到您的當前目錄(與--no-checkout選項啓用)
  • 結帳你想要的提交。

當你做一個本地克隆時,Git使用硬鏈接。這意味着,除非您修改文件,否則您可以進行1,000次部署,並且只使用(虛擬)只需要一個文件的空間。這種方式也是更快的歸檔或rsync。