我主要使用 Git 进行版本控制,但也尝试过 Mercurial。虽然我一般不太喜欢 Mercurial,但使用 Mercurial Queues (MQ) 维护清晰分离的补丁的想法非常吸引人。因此,我正在 Git 中寻找类似的东西(但更容易使用,更“gitty”,甚至可能更强大)。
所以我将首先解释我的想法:
举个例子,假设我正在做测试驱动的开发。我的主分支遵循软件的主存储库。从那里分支出来,我有一个名为“feature-test”的分支,并从那里分支出来,“feature-implementation”:
master
|_ feature-test
|_ feature-implementation
对于每个分支,我都记得父分支。
然后实现将像这样工作:我检查功能测试并编写一些测试。然后我检查功能实现,将其重新设置为功能测试的当前状态并编写实现。等等。
在某个时候,我更新了 master,然后 rebase 特性测试和特性实现。
作为旁注:替代重新定位分支,替代方法是合并来自父分支的更改。这使得冲突解决更容易。无论如何,通过分支链的级联合并就像一个变基。
当然,上述过程包含大量繁琐的手工工作。因此,我正在为以下任务寻找工具:
- 在分支上,从它跟踪的远程分支中拉出 master 并将更改合并到分支链中。当遇到冲突时,切换到发生冲突的分支,让用户解决冲突,然后继续级联合并(类似于 git rebase 遇到冲突时所做的事情)。
- 签出分支时,自动从祖先分支级联合并。冲突处理应该像前一点一样工作。
级联合并不应检出 master 及其下的分支(除非需要解决冲突),以避免由于接触但未更改的文件而导致重建。
这些要求有意义吗?是否有一些具有类似工作流程的现有工具?