2

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

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

4

3 回答 3

3

另见“git-annex 助手”“sharebox”

于 2012-06-07T20:58:27.397 回答
3

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

于 2012-06-07T00:06:03.277 回答
1

每当涉及同步时,git bundle这很有趣,因为:

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

但是,另一端的 repo 仍然会通过从连续捆绑包中拉取所有提交。

关于增量包,git bundle手册页

<git-rev-list-args>

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

虽然可以使用 rev-list --since=30.days.ago master,但最好确保在构建增量包时考虑到最后一个包使用的最后一次提交(特别是如果最后一次提交超过 30 天。如果它较新,则如果你接受“太多”的提交并不重要)。

于 2012-06-06T21:52:44.087 回答