用vimdiff 作为svn diff 的代码比较工具。
甲: 了解一下svn diff 的真实面目
1. svn diff test.c, 实际上会调用diff 命令,并传递8个命令参数。如下:
diff # diff-cmd
-u # extentions, 若无extentions, 用-u 参数
-L test.c(revision 4420) # -L 标志和第一个文件标签
-L test.c(working copy) # -L 标志和第二个文件标签
.svn/tmp/tempfile.tmp # 第一个文件
test.c # 第二个文件
乙:怎样改变diff-cmd 命令
所以,用 svn diff --diff-cmd vimdiff test.c 不会成功。
E282: Cannot read from "-L"
Press ENTER or type command to continue
而如下方式可以成功:
只取其中的第7个和第8个参数,再传给vimdiff,这样就能解决参数多的问题了。
1. 编写sh 脚本:
gitserver@gitserver-desktop:/usr/local/bin$ cat mydiff.sh
#!/bin/bash
shift 5
# 使用vimdiff比较
vimdiff "$@"
2. 执行命令行命令:
svn diff --diff-cmd mydiff.sh test.c
丙:更好的实现方式:
在svn 的配置文件中修改diff 的默认命令,这样就不用每次指定diff-cmd 命令了。
修改~/.subversion/config,找到如下配置行:
# diff-cmd = diff_program (diff, gdiff, etc.)
将上面那个脚本的路径添加进去就行,例如修改为
diff-cmd = /usr/local/bin/mydiff.sh
enjoy it! you will find more.
甲: 了解一下svn diff 的真实面目
1. svn diff test.c, 实际上会调用diff 命令,并传递8个命令参数。如下:
diff # diff-cmd
-u # extentions, 若无extentions, 用-u 参数
-L test.c(revision 4420) # -L 标志和第一个文件标签
-L test.c(working copy) # -L 标志和第二个文件标签
.svn/tmp/tempfile.tmp # 第一个文件
test.c # 第二个文件
乙:怎样改变diff-cmd 命令
所以,用 svn diff --diff-cmd vimdiff test.c 不会成功。
E282: Cannot read from "-L"
Press ENTER or type command to continue
而如下方式可以成功:
只取其中的第7个和第8个参数,再传给vimdiff,这样就能解决参数多的问题了。
1. 编写sh 脚本:
gitserver@gitserver-desktop:/usr/local/bin$ cat mydiff.sh
#!/bin/bash
shift 5
# 使用vimdiff比较
vimdiff "$@"
2. 执行命令行命令:
svn diff --diff-cmd mydiff.sh test.c
丙:更好的实现方式:
在svn 的配置文件中修改diff 的默认命令,这样就不用每次指定diff-cmd 命令了。
修改~/.subversion/config,找到如下配置行:
# diff-cmd = diff_program (diff, gdiff, etc.)
将上面那个脚本的路径添加进去就行,例如修改为
diff-cmd = /usr/local/bin/mydiff.sh
enjoy it! you will find more.