Mercurial仅合并某些变更集

Pos*_*Man 12 mercurial tortoisehg

好的,所以我们最近从SVN转换为Mercurial.
我们正在使用TortoiseHG.

在我们的一个存储库中,我们拥有所有项目,C++/.NET/ASP.我们有大约100个项目,都使用通用的图书馆项目.

因此,为每个项目创建多个repo将是非常困难的任务.

现在,我们有default分支,让我们说branchA.
我正在努力BranchA并添加我的超级更改,我更改了一个公共库,让我们说一个扩展方法

我要提交这branchAdefault,我怎么会去吗?

但是,我不希望将所有更改branchA合并到其中default,并且我不希望所有其他更改都来自default

希望这是足够的信息!

Luc*_*ero 23

只是为了让事情稍微更新一下:有一个移植命令可以在Mercurial中实现樱桃采摘.

此命令使用Mercurial的合并逻辑从其他分支复制单个更改,而不在历史记录图中合并分支.这有时被称为"backporting"或"cherry-picking".默认情况下,移植将从源更改集复制用户,日期和说明.


Wim*_*nen 11

有一种方法可以避免这个问题.您可以在一些基线版本的单独功能分支上进行所有更改,通常是最后一个版本的标记或其他一些稳定点S.

这样,您的更改X将在其自己的分支上,可以与其他分支合并(合并M1M2),而不会引入不需要的更改集:

-----S--o----o---M1----o---> default
     |          /
     |---------X   feature or bugfix
     |          \
     \--o---o----M2----o-----> BranchA 
Run Code Online (Sandbox Code Playgroud)

这只需要正常hg merge操作; 不需要补丁,移植MQ.


Lau*_*lst 5

如果将公共代码分隔到自己的存储库中,则可以使用子服务器将其包含在每个项目中.

顺便说一句,我建议为每个项目一个单独的存储库,尤其是如果有这么多.