使用git-format-patch和git am查找工作流示例

时间:2008-11-29 06:16:01

标签: git version-control workflow

我正在考虑让我的学生使用git进行结对编程。因为学生的工作必须是秘密的,所以公共回购是不可能的。相反,每个学生都将拥有自己维护的私人仓库,他们需要使用git-format-patch交换补丁。我已经阅读了手册页,但我有点不清楚将发送哪些补丁。对于学生来说,明显的事情是发送自上次发送以来的所有补丁或(如果git不介意冗余地接收相同的补丁)从时间的推移发送所有补丁。 (请记住这些是学生项目,它们持续数周且很小,表现不是标准。)我们最好的朋友是简单,我们喜欢蛮力。

有人能给我一些简短的例子,展示两个人,每个人都有私人git仓库,使用git-format-patch和git-am交换补丁?或者或者指向现有的git文档和/或教程?

2 个答案:

答案 0 :(得分:21)

如果他们能看到对方的git回购,那就最好了。 git本身是以这种方式管理的(人们可以参考一个公共回购,然后从那里进行格式化补丁)。如果人们永远不会看到对方的回购,事情会有点困难......

他们可能做的一件事是保留对他们上次执行格式修补程序的引用。假设他们从发送整个树(包括.git)开始:

tar cvf - mytree | gzip -9vc > /tmp/mytree.tgz
# mail /tmp/mytree.tgz
git tag last-send
# hack, commit, hack, commit
git format-patch -M -C last-send..
# mail 00* && rm 00*
git tag -f last-send
这个表单中的

git tag创建了一个“轻量级标签。它是一种书签。这将是人们跟踪他们发送的内容的简便方法,以便下次再发送。

另一方面:

# get patches from mail and place in /tmp
git am /tmp/00*
rm /tmp/00*

答案 1 :(得分:0)

似乎git bundle是更好的选择。与作为单向通信工作流的git format-patch不同,bundle允许您利用与公共遥控器相同的工作流程,但与直接访问分开。

它专为运动鞋网而设计,非常适合学生保存到USB或电子邮件包。

补丁更适合以项目主导沟通方式提交审批。