我正在尝试使用mercurial合并两个分支,并且存在一些冲突。在Subversion中工作时,合并冲突会导致冲突的文件被统一的差异替换,我自己的文件版本添加了“.mine”扩展名,以及文件的最后一个签入版本的“.rxxx” “延期补充。
使用mercurial,我只会添加统一差异以及添加了“.orig”扩展名的我自己的版本。
我习惯于在eclipse中使用“Compare With> Each Other”命令或使用FileMerge自行编辑合并,但由于基本版本不可用而无需手动进行并取出它我可以'不再这样做了。
我不想在hg merge命令期间执行合并 - 我更喜欢在我自己的时间内完成。
我可以使用设置或扩展程序来实现此目的吗?
答案 0 :(得分:8)
我们有一个名为internal:dump
的内置合并工具。所以用
[ui]
merge = internal:dump
你将被带回到古老的Subversion天,或接近它的东西。
答案 1 :(得分:3)
如何设置合并工具,只保存mercurial正在为合并工具进行操作而创建的文件?
[ui]
merge = copy
[merge-tools]
copy.executable = /path/to/mycopy.sh
copy.args = $base $local $other $output
然后在mycopy.sh中执行以下操作:
#!/bin/sh
cp $1 $4.base
cp $2 $4.mine
cp $3 $4.theirs
这应始终立即成功,并为每个冲突的文件留下.base
个.mine
和.theirs
。您可以在~/.hgrc
中设置一次,然后完成。
答案 2 :(得分:1)
查看hg resolve
命令。合并开始后,但在提交之前,您可以使用resolve
列出存在冲突的文件,并将冲突标记为已解决或未解决,或重新启动合并过程,所有这些都是在单个文件的粒度上进行的而不是变更。
它不会提供您想要的文件(虽然请参阅@ Ry4an的答案),但只要您愿意解决它,它就可以为任何特定文件启动合并工具。
答案 3 :(得分:0)
您可以设置HGMERGE环境变量。
Mercurial通常会首先尝试使用简单的合并算法合并文件,以查看它们是否可以合并而不会发生冲突。只有当存在冲突的更改时,hg才会实际执行合并程序。
您可以将其设置为某些GUI合并工具等。
还有其他选项,如内部:失败,内部:本地或内部:其他
在hgrc:
[ui]
merge = your-merge-program
[merge-tools]
kdiff3.args = $base $local $other -o $output
因此,您应该能够根据您的所有需求指定合并程序的参数。也许,您可以采用这种技术来启动Eclipse。
要在冲突时立即使合并失败,请尝试
export HGMERGE=false
事实上,如果您想提前知道冲突,可以使用hg merge的“预览”选项
-P --preview review revisions to merge (no merge is performed)