Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GIT实现Dropbox类型的功能_Git_Version Control_Mercurial_Dropbox - Fatal编程技术网

使用GIT实现Dropbox类型的功能

使用GIT实现Dropbox类型的功能,git,version-control,mercurial,dropbox,Git,Version Control,Mercurial,Dropbox,我想实现一种跨多台机器同步文件的机制。我并不特别关心超过1个月的文件,所以没有必要保留这些数据 除了删除旧版本,Git似乎完成了几乎所有这一切。是否有一个破坏性的命令让我说“杀死所有早于X的修订”?或者,如果我可以使用另一个VCS工具来完成同样的任务,我会非常感兴趣。每当涉及同步时,我都会非常感兴趣,因为: 它只创建一个文件(易于复制),类似于git repo(您可以从捆绑包中克隆/提取) 它可以创建一个增量捆绑包(第一个是完整捆绑包,您可以使用增量捆绑包,以便只选择最后的提交,而不是完整的历

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


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

每当涉及同步时,我都会非常感兴趣,因为:

  • 它只创建一个文件(易于复制),类似于git repo(您可以从捆绑包中克隆/提取)
  • 它可以创建一个增量捆绑包(第一个是完整捆绑包,您可以使用增量捆绑包,以便只选择最后的提交,而不是完整的历史记录)
然而,另一方的回购协议仍然会通过从后续捆绑中提取来获得所有提交

关于增量捆绑包:


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


虽然像
--since=30.days.ago master
这样的版本列表是可能的,但最好确保增量捆绑包的构建考虑了最后一个捆绑包使用的最后一次提交(特别是如果最后一次提交时间早于30天。如果是较新的,那么是否进行了“太多”提交并不重要).

你不需要自己去实现。已经完成了:

另请参见和。

rsync有什么问题?…不过请注意,Sparkeshare也不会清理旧的历史记录。这在他们的FAQ中有明确的说明。@larsks,SparkeShare没有,但我有!)手动。当然,有些人可能会想创建一个脚本,偶尔会这样做。
<git-rev-list-args>