首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Mercurial进行选定的修订?

如何使用Mercurial进行选定的修订?
EN

Stack Overflow用户
提问于 2013-12-10 22:45:34
回答 2查看 71关注 0票数 0

我们有一个带有Java类的Eclipse项目的存储库,现在需要同时支持Java 7和Java 6版本的开发。Java7流将成为新的主要开发流程,但我们需要同时管理这两个流程,并将两者部署到生产环境中。

我有点理解分支,但这似乎只会将所有的更改从一个存储库拖到另一个存储库。我需要留下一些改变。

Java 7本地存储库如下所示

代码语言:javascript
复制
  [old hist] -> [a] -> (head on default)    
                   \->[j7] -> [d] -> [e] -> [f] (working dir)

其中j7只包含与使用Java7相关的更改(例如,新的.classpath文件)

我们需要一个Java6流,它需要包含更改d,e,f,而不是jv7。

代码语言:javascript
复制
[a] ->          /-> [d] -> [e] -> [f] -> [b] (head on default)
    \->[j7] -> [d] -> [e] -> [f] 

默认路径现在有来自Java7流的最新工作,除了j7,而且它仍然有旧的Java6配置文件。

这似乎是一个常见的问题,大多数分支和合并讨论都没有提到。任何提示都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-12 18:09:47

其他可能的解决方案可能会让历史变得更加清晰:

备选案文A:

将Java7分支的头合并为Java6分支的头&然后在Java6分支上退出j7变更集。

备选方案B:

  1. 将changeset j7合并到Java6分支中&丢弃来自java7分支的所有更改(如果使用TortoiseHg,则这是一个标记为“丢弃来自合并目标(其他)修订的所有更改”的选项)。
  2. 将Java7分支的头合并为Java6分支的头。

如果我们在分支回购中进行配置更改,那么我们经常使用选项B。(将其视为在更改集历史记录中合并而不合并更改)。

在进行这样的合并时,我们总是在提交消息中包含“合并xxx -丢弃更改”(因此在浏览历史记录时很明显)。

如何从命令行“合并丢弃更改”:

Mercurial的CLI没有专门的“合并丢弃更改”选项,但是他们的“提示和技巧”帮助页解释了如何通过命令行实现这一点:

代码语言:javascript
复制
hg -y merge --tool=internal:fail RevOfHeadToDiscard
hg revert --all --rev .
hg resolve -a -m
票数 0
EN

Stack Overflow用户

发布于 2013-12-11 01:58:47

有很多方法可以做到这一点。这是一个。您可以将所有更改集从Java7 repos提取到Java6 repos,然后运行merge。在Java6中进行合并之前,手动修改配置文件以撤消来自j7的更改,然后提交合并。

对于这个变更集,您只需要做一次,这意味着,如果稍后您将其他更改从Java7拉到Java6,那么您就不必再为j7操心了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20506946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档