我在一个相当古老的沙盒上从命令行做了svn update
,并进行了一些本地更改。检测到冲突,所以我看到了通常的输出:
Conflict discovered in 'file.cpp'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options: p
我没有在这台计算机上设置我的svn命令行选项,因此我无法使用启动meld
来解决冲突的首选方法。因此,我选择推迟冲突,直到我融入其中。
然后我使用与the one shown here类似的程序设置meld
。
现在,做另一个svn update
不会重新发现冲突,因此不会让我选择启动融合。我只会看到“At revision ...
”。有没有办法再次获得“Conflict discovered in ...
”行?或者是否有命令启动3路融合解析器?
答案 0 :(得分:1)
根据it's documentation meld 可以用作git merge helper。 git merge helper的调用方式如下:
使用此工具调用git mergetool(通过-t或 --tool选项或merge.tool配置变量)将调用已配置的命令行,并将$ BASE设置为临时名称 包含合并公共基础的文件(如果有); $ LOCAL 设置为包含该内容的临时文件的名称 当前分支上的文件; $ REMOTE设置为临时名称 包含要合并的文件内容的文件,并设置$ MERGED 到合并工具应写入的文件的名称 合并决议的结果。
所以至少你可以像这样运行它:
export BASE=some_file.r123
export LOCAL=some_file.mine
export REMOTE=some_file.r124
export MERGED=some_file
meld
我不知道这与使用its three-file syntax:meld some_file.r123 some_file.mine some_file.r124
运行它是否相同。
答案 1 :(得分:0)
跟进@AndreKR
因为每个冲突文件(* .MY,* .THEIR,* .BASE)都有(暂停后)3个临时文件,而且Meld最多可以接受三个文件名作为file-diff的参数,只需手动meld MY BASE THEIR
运行,编辑我的文件以获取所需结果,保存,然后关闭合并冲突,在svn resolve --accept 'my-full FILENAME'
之后使用(根据svn help resolve
“ - -accept选项目前是必需的“svn resolve
也是必须在MY文件中完成的所有更改)
[helpers]
部分:diff-cmd
,diff3-cmd
和merge-tool-cmd
键将获得公共值 - meld
(可能带路径,但没有参数) 。使用merge-tool会遇到一些麻烦,因为“... Subversion会将4个参数传递给指定的命令”而Meld只能接受3个,但是你所提到的blog-post包含解决这个问题的解决方法