Mercurial仅合并某些变更集
好的,我们最近从SVN转换成了Mercurial。Mercurial仅合并某些变更集,mercurial,tortoisehg,Mercurial,Tortoisehg,好的,我们最近从SVN转换成了Mercurial。 我们通常使用龟甲。 在我们的一个仓库中,我们有我们所有的项目,C++和.NET /ASP。我们有大约100个项目,都使用公共库项目。 因此,为每个项目创建多个回购协议将是一项相当困难的任务 现在,我们有了default分支,让我们说branchA 我正在处理BranchA并将我的uber更改添加到其中,我更改了一个公共库,比如一个扩展方法 我想把这个提交给branchA和default,我该怎么做 但是,我不希望将来自branchA的所有更
我们通常使用龟甲。
在我们的一个仓库中,我们有我们所有的项目,C++和.NET /ASP。我们有大约100个项目,都使用公共库项目。
因此,为每个项目创建多个回购协议将是一项相当困难的任务
现在,我们有了
default
分支,让我们说branchA
我正在处理
BranchA
并将我的uber更改添加到其中,我更改了一个公共库,比如一个扩展方法我想把这个提交给
branchA
和default
,我该怎么做但是,我不希望将来自
branchA
的所有更改合并到default
,也不希望来自default
的所有其他更改希望这是足够的信息 您描述的是“樱桃采摘”或“部分合并”,这在Mercurial目前是不可能的。您有几个选择:
- 将公共代码分离到它自己的存储库中
- 生成对通用代码所做更改的差异,并将其应用于
分支default
顺便说一句,我建议每个项目都有一个单独的存储库,特别是如果有这么多的项目的话。有一种方法可以避免这个问题。通常,您可以使用上一版本的标签或其他稳定点
S
这样,您的更改X
将位于自己的分支上,该分支可以与其他分支合并(合并M1
和M2
),而不会引入不需要的更改集:
-----S--o----o---M1----o---> default
| /
|---------X feature or bugfix
| \
\--o---o----M2----o-----> BranchA
这只需要正常的
hg merge
操作;不需要补丁,或者。只是为了保持更新:Mercurial中有一个实现樱桃采摘的工具
此命令使用Mercurial的合并逻辑来复制单个更改
来自其他分支,而不合并历史图中的分支。
这有时被称为“后移”或“樱桃采摘”。通过
默认情况下,嫁接将从源复制用户、日期和描述
变更集
因为mercurial支持樱桃采摘,所以被否决。Mercurial称之为“移植”,可以使用移植扩展。使用版本控制管理项目是错误的。如果有一个库在多个项目之间共享,那么该库应该有自己的存储库。从长远来看,手动处理这样的变化会给您带来无尽的问题。@PeterGraham mega repos在非常大的公司中使用,并取得了良好的成功。