我正在寻找一个基于 Linux 的工具,用于使用 Perforce 进行 3 路合并/解析。我熟悉 vim/vimdiff,但我不知道如何/是否可以将它们用于 3 路合并。无论哪种情况,请让我知道,根据您的说法,Linux 上最好的合并/解析工具是什么。
为清楚起见,让我补充一点,我更喜欢不需要 X 服务器的工具,即可以通过 putty 使用。
如果您不使用 X 客户端,请尝试查看 emacs 的ediff。这适用于文本模式(尽管在 X 中更容易)。
我更喜欢meld它功能强大但轻量级,没有 Kdiff3 那样的 KDE 依赖。看官方主页
我猜你说的是用三向差异工具解析文件。不同的版本是,
现在,要做到这一点,需要在 linux 中进行一些设置。我有一个.p4config
文件定义了我更喜欢的差异工具。
P4CLIENT=mywork
P4DIFF=diff -u
P4EDITOR=vi
P4IGNORE=.p4ignore
这里P4DIFF
设置为diff -u
。为了使整个工作正常,.p4config
文件需要被环境变量插入以强制执行。
export P4CONFIG=.p4config
现在是甜蜜点。我们需要通过p4 resolve
命令实际进行解析。
p4 resolve /path/to/mysource.h
一旦我们这样做,它表明存在冲突,因为有人修改了我们正在工作的原始版本。所以它提示我们采取行动。
/path/to/mysource.h - merging //stream/version/path/to/mysource.h#2
Diff chunks: 13 yours + 2 theirs + 0 both + 1 conflicting
Accept(a) Edit(e) Diff(d) Merge (m) Skip(s) Help(?) e: d
我们可以通过按来查看差异d
。
--- /path/to/mysource.h 2016-09-28 18:34:54.918709150 -0400
+++ /path/to/tmp.6365.102 2016-09-29 11:05:32.228946564 -0400
@@ -16,6 +16,7 @@
we are same in all branches
same as everywhere
+ added line
more same
@@ -28,7 +29,12 @@
here you go the conflict
+>>>> ORIGINAL //stream/version/path/to/mysource.h#1
+ the original line is here
+==== THEIRS //stream/version/path/to/mysource.h#2
+ their line is here
+==== YOURS /path/to/mysource.h
my line is here
+<<<<
Accept(a) Edit(e) Diff(d) Merge (m) Skip(s) Help(?) e: e
现在可以修复这个类型e
。它将打开一个编辑器,我们可以在其中比较+====
行和+<<<<
行之间的不同版本。
完成编辑后,我们可以通过键入来接受a
。
Accept(a) Edit(e) Diff(d) Merge (m) Skip(s) Help(?) ae: a
整个过程可以从远程命令/shell 窗口完成。所以不需要X-server。
我有一个叫做 的东西diff3
,它有一个合并选项。我不确定它是从哪里来的,我也没有使用过。diff3 -m file1 file2 file3
. 拿走它的价值。
顺便说一句,我正在运行 OpenSuSE 11.2,如果有帮助的话。