【问题标题】:Using GIT to implement Dropbox type functionality使用 GIT 实现 Dropbox 类型功能
【发布时间】:2012-06-06 20:58:34
【问题描述】:

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

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

【问题讨论】:

  • rsync 出了什么问题?

标签: git version-control mercurial dropbox


【解决方案1】:

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

【讨论】:

  • ...尽管请注意 Sparkleshare 也不会清理旧的历史记录。他们的常见问题解答中明确解决了这一点。
  • @larsks,SparkeShare 没有,但我有! :) 手动。当然,有人可能想要创建偶尔执行此操作的脚本。
【解决方案2】:

【讨论】:

    【解决方案3】:

    只要涉及同步,git bundle 就会很有趣,因为:

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

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

    关于增量包,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 这样的 rev-list 是可能的,但最好确保在构建增量包时考虑到最后一个包使用的最后一次提交(特别是如果最后一次提交超过 30 天。如果它是较新的,那么如果你接受“太多”提交也没关系)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2022-01-26
      • 2021-07-25
      • 2019-02-28
      • 2019-06-08
      • 2021-02-08
      • 1970-01-01
      相关资源
      最近更新 更多