使用GIT实现Dropbox类型功能

时间:2012-06-06 20:58:35

标签: git version-control mercurial dropbox

我想实现一种机制来跨多台机器同步文件。我并不特别关心超过1个月的文件,因此无需保留这些数据。

除了删除旧版本之外,Git似乎几乎完成了所有这些工作。是否有一个破坏性的命令让我说“杀死所有早于X的修订版”?或者,如果有另一个VCS工具我可以用来完成同样的事情,我会非常感兴趣。

3 个答案:

答案 0 :(得分:3)

你不需要自己实现。它已经完成:http://sparkleshare.org/

答案 1 :(得分:3)

答案 2 :(得分:1)

每当涉及同步时,git bundle很有意思,因为:

  • 它只创建一个文件(易于复制),就像一个git repo(你可以从一个包中克隆/拉出)
  • 它可以创建一个增量包(第一个是完整的包,而不是你可以使用增量包,以便只选择最后的提交,而不是完整的历史记录)

然而,另一方的回购仍然会通过连续捆绑的拉动来所有提交。

关于增量捆绑,git bundle man page

<git-rev-list-args>
  

git rev-parsegit rev-list可接受的参数列表(包含命名参考,请参阅下面的SPECIFYING REFERENCES),它指定了特定对象和传输参考。
  例如,master~10..master导致当前主引用与自其第10个祖先提交以来添加的所有对象一起打包。

虽然可以使用像--since=30.days.ago master这样的转发列表,但最好确保构建增量包,同时考虑最后一个包使用的最后一次提交(特别是如果最后一次提交超过30)如果它更新,那么你是否采取“太多”提交并不重要。