SVN更新命令重新发现冲突

时间:2013-01-02 16:46:34

标签: bash svn command-line meld

我在一个相当古老的沙盒上从命令行做了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路融合解析器?

2 个答案:

答案 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 syntaxmeld some_file.r123 some_file.mine some_file.r124运行它是否相同。

答案 1 :(得分:0)

跟进@AndreKR

  • 如何解决已安装Meld的延迟冲突

因为每个冲突文件(* .MY,* .THEIR,* .BASE)都有(暂停后)3个临时文件,而且Meld最多可以接受三个文件名作为file-diff的参数,只需手动meld MY BASE THEIR运行,编辑我的文件以获取所需结果,保存,然后关闭合并冲突,在svn resolve --accept 'my-full FILENAME'之后使用(根据svn help resolve“ - -accept选项目前是必需的“svn resolve也是必须在MY文件中完成的所有更改)

  • 如何使用Meld作为合并 - 永远不同
配置文件中的

[helpers]部分:diff-cmddiff3-cmdmerge-tool-cmd键将获得公共值 - meld(可能带路径,但没有参数) 。使用merge-tool会遇到一些麻烦,因为“... Subversion会将4个参数传递给指定的命令”而Meld只能接受3个,但是你所提到的blog-post包含解决这个问题的解决方法