Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Configuration 为Apple Mac OS X配置Mercurial-FileMerge_Configuration_Mercurial_Macos_Filemerge - Fatal编程技术网

Configuration 为Apple Mac OS X配置Mercurial-FileMerge

Configuration 为Apple Mac OS X配置Mercurial-FileMerge,configuration,mercurial,macos,filemerge,Configuration,Mercurial,Macos,Filemerge,我如何配置苹果的FileMerge程序,使其能像Mercurial的合并工具一样工作?我在主目录中设置了.hgrc文件,我只想将FileMerge配置为合并程序。更新:Mercurial wiki有一个。先读一读 我还没有尝试使用FileMerge,但是一个概述可能会有所帮助。您想知道的大部分内容都在Mercurial wiki的页面上进行了描述。简短版本是您的典型选择,包括: 将HGMERGE环境变量设置为指向所需的合并工具 或者,将以下内容添加到.hgrc: [ui] merge = /

我如何配置苹果的FileMerge程序,使其能像Mercurial的合并工具一样工作?我在主目录中设置了.hgrc文件,我只想将FileMerge配置为合并程序。

更新:Mercurial wiki有一个。先读一读

我还没有尝试使用
FileMerge
,但是一个概述可能会有所帮助。您想知道的大部分内容都在Mercurial wiki的页面上进行了描述。简短版本是您的典型选择,包括:

HGMERGE
环境变量设置为指向所需的合并工具

或者,将以下内容添加到
.hgrc

 [ui]
 merge = /path/to/toolname

 [merge-tools]
 toolname.args = $base $local $other

关键是合并工具需要接受三个参数:基本修订、本地更改和来自其他分支的更改。您可以使用第一个配置来指定工具,第二个配置来指定它如何接受参数。

我还没有尝试过,但我打赌您需要一直指向FileMerge可执行文件,而不仅仅是应用程序包

因此:

如中所述,这对我来说适用于各种版本的hg:

  • $PATH
    中的某个位置创建脚本,例如在
    /usr/local/bin
    中:
  • 将以下部分添加到您的
    ~/.hgrc

现在您可以使用它作为
$hg opendiff

链接的文档中没有一个不经过修改就可以为我工作;最终我所做的是将和“使用Vim作为文件合并程序”结合起来。我创建了中描述的opendiff-w脚本(尽管我将其命名为hgvdiff),并将以下内容放入我的.hgrc中:

[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = /usr/local/bin/hgvdiff

[merge-patterns]
** = filemerge

[merge-tools]
filemerge.executable = /usr/local/bin/hgvdiff
filemerge.args = $local $other -ancestor $base -merge $output
filemerge.checkchanged = true
filemerge.gui = true

[extensions]
extdiff =
这是一种中等功能,尽管它有时会检查文件是否被过早更改,从而导致一系列:

 output file wwwroot/zoomingo/website/protected/messages/en/z.php appears unchanged
was merge successful (yn)? n

关闭文件合并时。

以下是我如何修复它的:

创建了
/usr/local/bin/opendiff-w
,填充了:

#!/bin/sh
# opendiff returns immediately, without waiting for FileMerge to exit.
# Piping the output makes opendiff wait for FileMerge.
opendiff "$@" | cat
然后运行命令:
sudochmod+x/usr/local/bin/opendiff-w

然后编辑
~/.hgrc
,添加以下内容:

[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = opendiff-w

[merge-tools]
filemerge.executable = /usr/local/bin/opendiff-w
filemerge.args = $local $other -ancestor $base -merge $output

[extensions]
extdiff = 
然后我运行以下命令检查它是否工作:
hg opendiff

但是,我得到了以下错误:

exception raised trying to run FileMerge: launch path not accessible
为了修复它,我运行了以下命令:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/
现在应该可以工作并打开FileMerge

====================================================================

如果您使用的是TorsoiseHg for Mac,现在要使用FileMerge,您需要做的唯一一件事就是在出现“解决冲突”窗口时从检测到的合并/差异工具中选择FileMerge,然后选择“工具解决”


希望这有帮助。

对于其他人:
opendiff-w
是脚本文件,它最终被.hgrc文件引用(这对我来说不太明显)。第一个代码块是内容。另外,更改了为其他人添加execute
chmod+xopendiff-w
的权限:对我来说不明显的事情:现在需要运行
$hg opendiff
(查看
文件合并中的输出
$hg diff
仍将在命令行上为其他人显示输出:。。。您还需要为其他人启用
~/.hgrc
中的extdiff扩展。据我所知,使用chmod a+x opendiff-w使
opendiff-w
可执行
extdiff=
是为了加载扩展。我也尝试过,我得到:
FileMerge[51550:30f]无法为root创建连接

[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = opendiff-w

[merge-tools]
filemerge.executable = /usr/local/bin/opendiff-w
filemerge.args = $local $other -ancestor $base -merge $output

[extensions]
extdiff = 
exception raised trying to run FileMerge: launch path not accessible
sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/