在Windows上做项目开发的时候,常常需要调用SVN Blame去追溯一个文件的编辑历史,但是这个常见的需求往往需要很繁琐的步骤。首先需要打开文件所在文件夹,然后右键,在一长排上下文菜单中准确地选中Blame命令,然后指定版本号,好不容易打开了Blame界面,还要手动Alt+G定位到某一行。实在是很麻烦。
其实VS有个外部工具菜单,可以通过VS直接调用外部的可执行文件或者脚本,有了这个功能,我们就可以一键调用SVN Blame,并且准确定位到你在VS中选中的那一行。
一、编写外部脚本 tortoise_blame.bat
echo off & color 0A for /f "usebackq delims=" %%i in (`"svn info %1 | findstr "Rev""`) do set Reversion=%%i echo %Reversion% set str="%Reversion%" for /f "tokens=4,*" %%i in (%str%) do ( set Reversion=%%i ) echo %1 : %2 rem echo %Reversion% rem /endrev:"-1" is also ok TortoiseProc.exe /command:blame /path:%1 /line:%2 /startrev:1 /endrev:%Reversion%
这个脚本的作用就是调用 TortoiseProc.exe 可执行文件,执行blame命令,然后传入参数。前提是SVN安装路径已经在你的环境变量中,这样你才可以直接调用TortoiseProc.exe程序,否则你需要使用绝对路径。
调用这个脚本需要传入两个参数 文件路径(%1) 和 行号(%2)
最终的SVN版本号是通过你传入的文件路径提取出来的。
当然,上面的脚本大部分代码是在提取最终的SVN版本号,如果你不想知道最终版本号,直接使用 /endrev:"-1"也可以
二、新建 SVN Blame 菜单
在VS界面点击 工具->外部工具->添加
标题:可以自定义,在标题最后用英文括号包含一个 "&B",这样可以使用快捷键。
命令:就是刚才那个脚本的路径
参数:点开后面的黑色三角,依次选择 “项路径”和“当前行”,用空格分开
初始目录:无所谓
如果勾选了使用输出窗口,那么脚本的输出将会在VS的输出窗口展示。
点击:应用->确定
此时打开“工具”菜单,就会出现刚才添加的SVN Blame命令,点击该命令,就会打开Blame窗口,并且定位到你在VS中选定的行。
也可以通过刚才设置的快捷键 Alt + T , B调用该命令。相当方便。
输出窗口也可以展示文件名,行号和最终版本号。