手动将更改拖入存储库

时间:2013-03-07 18:12:07

标签: git

我有一个客户使用我的应用程序和.git存储库的本地副本,她用它来还原更改和测试补丁等。但是没有简单的方法可以通过防火墙拉出最新的更改和其他规则。所以我想“让他们下载一个新的,完整的.git存储库压缩”。但是存储库是一个可以舒适地移动的大妈妈,所以我更愿意向她发送一个压缩的.git增量更改(对象,引用等)以在她的本地.git目录中解压缩。

我已根据文件时间戳尝试了以下工作流程(在我的软件中自动完成):

  1. 在她的.git / objects目录中获取最新的时间戳
  2. 从我的.git文件目录中创建一个zip,从该时间戳开始
  3. 电子邮件zip文件
  4. 在客户的.git中解压缩zip(如果某些文件被覆盖则无关紧要)
  5. git checkout -f master(或他们需要的任何分支/标记)和git clean -d -f
  6. 它工作正常,因为她的工作树和.git目录永远不会在本地修改,只能从​​一个分支签出到标签或其他任何东西。但是文件时间戳肯定是不可靠的......也就是说它可能都被某些备份或任何东西touch所驱动,所以我正在寻找一种更优雅的方法来使用某种类型的提交创建这个增量zip。

    所以,我怎么能以编程方式创建我的.git目录的增量zip文件,因为我有来自客户本地.git的信息?我想这与git内部拉动的内容非常相似来自远程的东西递增。选择正确文件的算法是什么?如何从客户的存储库中确定基线提交以构建增量zip?

1 个答案:

答案 0 :(得分:2)

为什么不使用git format-patch命令?还是git bundleHere是如何做到这一点的一个例子。您的客户只需要下载完整的压缩.git目录一次,之后他就可以使用增量补丁。