传递给 SVNs --diff3-cmd 的参数是什么?

Mik*_*ler 2 svn diff

我一直在尝试为 SVN 编写自己的 diff3 包装脚本,我想知道传递给的各种参数是什么--diff3-cmd

到目前为止我能找到的最接近的东西是:

如何使用 Beyond Compare 3 作为 svn 的 diff3-cmd?

但这并不能完全解释所有参数的作用。

我也试图通过它:

#!/bin/ksh
echo "$*"
Run Code Online (Sandbox Code Playgroud)

as --diff3-cmd,并得到了一些输出,但我无法对它吐出的参数做出正面或反面。这些是某些 unix diff 命令的标准参数吗?

-E -m -L .working -L .merge-left.r1000 -L .merge-right.r1001 /home/user/some/long/filename1 /tmp/tmp /home/user/some/long/filename2
Run Code Online (Sandbox Code Playgroud)

Wim*_*nen 5

这些是某些 unix diff 命令的标准参数吗?

是的,这些是GNU diff3 的参数。它在 svn book 中有介绍

这就是他们实际代表的内容:

  1. -E- 在差异输出中添加括号。例如<<<<<<< mine
  2. -m-直接输出合并文件
  3. -L-同为--label文件命名。
  4. .working - 工作副本文件的标签名称。
  5. -L-同为--label文件命名。
  6. .merge-left.rXXX - 标签名称,即旧版本的版本号。
  7. -L-同为--label文件命名。
  8. .merge-right.rXXX - 标签名称,即较新版本的版本号。
  9. <temp-file-path>- “我的”文件的文件路径。即更新过程之前工作副本
  10. <temp-file-path>- “旧”文件的文件路径。即旧版本
  11. <temp-file-path>- “你的”文件的文件路径。即较新的修订版

如您所见,前 2 个与 GNU diff3 以外的任何内容都不相关,因此在编写 bat 文件以将参数传递给外部工具时使用SHIFT两次,因此您在插槽 1-9 而不是 3-11 中有相关参数.

这对于批处理文件是必需的,因为它们只处理 9 个参数,但对于 bash/python 等则不是必需的。