1

我主要使用 Git 进行版本控制,但也尝试过 Mercurial。虽然我一般不太喜欢 Mercurial,但使用 Mercurial Queues (MQ) 维护清晰分离的补丁的想法非常吸引人。因此,我正在 Git 中寻找类似的东西(但更容易使用,更“gitty”,甚至可能更强大)。

所以我将首先解释我的想法:

举个例子,假设我正在做测试驱动的开发。我的主分支遵循软件的主存储库。从那里分支出来,我有一个名为“feature-test”的分支,并从那里分支出来,“feature-implementation”:

master
|_ feature-test
   |_ feature-implementation

对于每个分支,我都记得父分支。

然后实现将像这样工作:我检查功能测试并编写一些测试。然后我检查功能实现,将其重新设置为功能测试的当前状态并编写实现。等等。

在某个时候,我更新了 master,然后 rebase 特性测试和特性实现。

作为旁注:替代重新定位分支,替代方法是合并来自父分支的更改。这使得冲突解决更容易。无论如何,通过分支链的级联合并就像一个变基。

当然,上述过程包含大量繁琐的手工工作。因此,我正在为以下任务寻找工具:

  • 在分支上,从它跟踪的远程分支中拉出 master 并将更改合并到分支链中。当遇到冲突时,切换到发生冲突的分支,让用户解决冲突,然后继续级联合并(类似于 git rebase 遇到冲突时所做的事情)。
  • 签出分支时,自动从祖先分支级联合并。冲突处理应该像前一点一样工作。

级联合并不应检出 master 及其下的分支(除非需要解决冲突),以避免由于接触但未更改的文件而导致重建。

这些要求有意义吗?是否有一些具有类似工作流程的现有工具?

4

1 回答 1

1

显然,TopGit完全符合我的要求:

  1. 您可以定义补丁所依赖的补丁*es*(是的,复数!)。
  2. 从补丁分支,您可以轻松地创建补丁文件。
  3. “tg update”从父补丁分支中拖入更改。它也可以递归地执行此操作。

这听起来很有希望开始使用它并在以后关心小细节。

于 2013-08-02T04:31:25.987 回答