是否有Mercurial命令可以在hg pull
查看所有需要手动合并的文件列表(即:有冲突)时使用hg merge
?
Jam*_*ers 36
hg resolve --list
从文档:
具有未解决冲突的合并通常是使用internal:merge配置设置或diff3等命令行合并工具进行非交互式合并的结果.resolve命令用于管理合并中的文件,运行hg merge之后,以及运行hg commit之前(即工作目录必须有两个父项).
编辑2012年1月5日:
(今天我收到了对这个答案的投票,所以我重温了它.我发现我误解了这个问题.)
问题是"我已经从远程存储库执行了一次拉取,但还没有执行合并.我可以看到在执行合并时会产生什么冲突?"
我上面的回答显然是错误的.阅读完链接文档后,我认为没有内置的方法可以做到这一点.但是,有一种方法可以在不破坏您的工作源树的情况下执行此操作.
假设您已将存储库A从某个远程源克隆到本地系统上的存储库B,即hg clone http://hg.example.com/A B
.执行此操作后,您将对本地存储库B进行更改,该存储库至少涉及一次提交.与此同时,已对存储库A进行了更改,因此当您执行拉动时,您会收到一条消息,指示已添加新的更改集并已创建头.
此时,您可以hg heads
列出合并中涉及的两个更改集.根据此信息,您可以发出状态命令以列出磁头之间的差异.假设您的存储库B中的修订号,根据头列表,是"1"和"2",那么您可以hg status --rev 1:2
查看更改列表.
当然,这并不能告诉您进行合并时是否会发生冲突.由于没有可以向您显示此命令的命令,因此您必须通过克隆到新存储库并在那里进行合并来"预览"合并.所以,hg clone B C && cd C && hg merge
.如果您对此合并的结果感到满意,您可以这样做hg com -m 'Merging complete' && hg push && cd ../ && rm -rf C
.
这是一个过程,但如果合并结果是一场灾难,它会使您当前的源代码树保持清洁.您可能还会发现使用公共存储库的这种描述很有帮助.
除非我自己误读,否则上面的答案似乎没有解决我认为被问到的问题:我在我的存储库中有两个分支,我想要合并,我想知道会发生什么样的冲突(例如,在逐步解决冲突解决方案之前.)
为此,我将与该:merge3
工具合并(它尝试自动合并,但保留未解决的冲突),然后使用hg resolve --list
- 或只是查看merge命令的输出 - 来查看冲突.
hg merge <otherbranch> --tool :merge3
hg resolve -l
Run Code Online (Sandbox Code Playgroud)
如果你实际上并不想在最后进行合并(如果你只想查看会发生什么冲突),那么可以在hg update -C
之后运行以撤消合并.
如果您确实想要完成合并,则可以在合并更改集之前运行hg resolve <filepath>
每个文件,或者只是hg resolve --all
逐步查看所有仍存在冲突的文件hg commit
.
归档时间: |
|
查看次数: |
14686 次 |
最近记录: |