我一直在尝试为 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)
这些是某些 unix diff 命令的标准参数吗?
是的,这些是GNU diff3 的参数。它在 svn book 中有介绍。
这就是他们实际代表的内容:
-E
- 在差异输出中添加括号。例如<<<<<<< mine
-m
-直接输出合并文件-L
-同为--label
文件命名。.working
- 工作副本文件的标签名称。-L
-同为--label
文件命名。.merge-left.rXXX
- 标签名称,即旧版本的版本号。-L
-同为--label
文件命名。.merge-right.rXXX
- 标签名称,即较新版本的版本号。<temp-file-path>
- “我的”文件的文件路径。即更新过程之前的工作副本<temp-file-path>
- “旧”文件的文件路径。即旧版本<temp-file-path>
- “你的”文件的文件路径。即较新的修订版如您所见,前 2 个与 GNU diff3 以外的任何内容都不相关,因此在编写 bat 文件以将参数传递给外部工具时使用SHIFT
两次,因此您在插槽 1-9 而不是 3-11 中有相关参数.
这对于批处理文件是必需的,因为它们只处理 9 个参数,但对于 bash/python 等则不是必需的。