我们有一个带有Java类的Eclipse项目的存储库,现在需要同时支持Java 7和Java 6版本的开发。Java7流将成为新的主要开发流程,但我们需要同时管理这两个流程,并将两者部署到生产环境中。
我有点理解分支,但这似乎只会将所有的更改从一个存储库拖到另一个存储库。我需要留下一些改变。
Java 7本地存储库如下所示
[old hist] -> [a] -> (head on default)
\->[j7] -> [d] -> [e] -> [f] (working dir)其中j7只包含与使用Java7相关的更改(例如,新的.classpath文件)
我们需要一个Java6流,它需要包含更改d,e,f,而不是jv7。
[a] -> /-> [d] -> [e] -> [f] -> [b] (head on default)
\->[j7] -> [d] -> [e] -> [f] 默认路径现在有来自Java7流的最新工作,除了j7,而且它仍然有旧的Java6配置文件。
这似乎是一个常见的问题,大多数分支和合并讨论都没有提到。任何提示都将不胜感激。
发布于 2013-12-12 18:09:47
其他可能的解决方案可能会让历史变得更加清晰:
备选案文A:
将Java7分支的头合并为Java6分支的头&然后在Java6分支上退出j7变更集。
备选方案B:
如果我们在分支回购中进行配置更改,那么我们经常使用选项B。(将其视为在更改集历史记录中合并而不合并更改)。
在进行这样的合并时,我们总是在提交消息中包含“合并xxx -丢弃更改”(因此在浏览历史记录时很明显)。
如何从命令行“合并丢弃更改”:
Mercurial的CLI没有专门的“合并丢弃更改”选项,但是他们的“提示和技巧”帮助页解释了如何通过命令行实现这一点:
hg -y merge --tool=internal:fail RevOfHeadToDiscard
hg revert --all --rev .
hg resolve -a -m发布于 2013-12-11 01:58:47
有很多方法可以做到这一点。这是一个。您可以将所有更改集从Java7 repos提取到Java6 repos,然后运行merge。在Java6中进行合并之前,手动修改配置文件以撤消来自j7的更改,然后提交合并。
对于这个变更集,您只需要做一次,这意味着,如果稍后您将其他更改从Java7拉到Java6,那么您就不必再为j7操心了。
https://stackoverflow.com/questions/20506946
复制相似问题