2012-06-06 82 views
2

我想實現一種機制來跨多臺機器同步文件。我並不特別關心超過1個月的文件,因此不需要保留這些數據。使用GIT實現Dropbox類型功能

除了消除舊版本之外,Git似乎幾乎可以完成所有這些工作。是否有破壞性的命令讓我說「殺死所有比X年老的修訂版」?或者如果有另一個VCS工具可以用來完成同樣的事情,我會非常感興趣。

+1

rsync有什麼問題? – jthill

回答

1

每當同步參與,git bundle很有趣,因爲:

  • 它將只創建一個文件(易複製左右),這就好比一個混帳回購協議(您可以複製從包/拉)
  • 它可以創建一個增量束(第一個是全包,比你可以使用增量的,以便選擇只有最後提交,而不是完整的歷史)

但是,在對方的回購將仍然通過從連續捆綁中獲得的全部提交。

關於增量束,git bundle man page

<git-rev-list-args> 

的參數列表,接受git rev-parsegit rev-list(和包含命名REF,見下文SPECIFYING REFERENCES),指定的特定對象和引用到運輸。
例如,master~10..master會導致當前主引用與自第10個祖先提交後添加的所有對象一起打包。

雖然轉列表一樣--since=30.days.ago master將是可能的,這是最好的,以確保增量包是建立考慮到最後提交所使用的最後一個束(尤其是如果最後一次提交的超過30天如果它更新,那麼你是否承擔了「太多」的提交併不重要)。

3

你不需要實現你自己。它已完成:http://sparkleshare.org/

+1

...雖然請注意,Sparkleshare也不會清理舊的歷史。這在他們的常見問題解答中有明確的說明 – larsks

+0

@larsks,SparkeShare不會,但我做!手動。當然有人可能想要創建一段時間就能完成的腳本。 – seler