VS 一键调用 SVN Blame
在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 % : %
rem echo %Reversion%
rem /endrev:"-1" is also ok
TortoiseProc.exe /command:blame /path:% /line:% /startrev: /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调用该命令。相当方便。
输出窗口也可以展示文件名,行号和最终版本号。

VS 一键调用 SVN Blame的更多相关文章
- 【转】Eclipse中一键调用javah生成jni的头文件
这里定义了一个本地方法jni_test,该方法返回一个String.其中System.loadLibrary是用来加载本地库的(dll或者so). 有了这个类以后,就可以调用javac命令编译,得到E ...
- 一键删除.svn文件bat脚本
用过SVN或CVS版本控制工具的朋友,在享受着它们给我们带来的方便的同时,也许也在为这么一件事情苦恼: 如果某个目录在SVN或CVS版本控制工具的控制之下时.该目录下以及该子孙目录下都会有一个.svn ...
- 快看!❤️又一超实用浏览器插件!常用网站自动整合,JSON格式化,CSDN全站去广告!多种工具一键调用。开发者的福音!
其实这个插件才出来的时候博主也下载了使用过,并没有什么亮点,那时候甚至觉得有点多余,因为CSDN全站去广告啥的,早就安装了油猴脚本,广告?不存在的嘿嘿.. 就在前几天看见CSDN的活动在推荐这款插件, ...
- C++ 小工具一键解决SVN Clean Up 失败的问题
参考文章: 1.http://blog.csdn.net/luochao_tj/article/details/46358145 2.http://blog.csdn.net/segen_jaa/ar ...
- PHP中调用SVN命令更新网站方法(解决文件名包含中文更新失败的问题)
想说写一个通过网页就可以执行 SVN 升级的程序,结果并不是我想得那样简单,有一些眉角需要注意的说. 先以 Apache 的用户帐号执行 SVN checkout,这样 Apache 才有 SVN 的 ...
- Scrapyd 改进第二步: Web Interface 添加 STOP 和 START 超链接, 一键调用 Scrapyd API
0.提出问题 Scrapyd 提供的开始和结束项目的API如下,参考 Scrapyd 改进第一步: Web Interface 添加 charset=UTF-8, 避免查看 log 出现中文乱码,准备 ...
- (基于Jenkins + SVN + Ant + Weblogic Server的)应用程序自动(/一键)部署的设想
一直想实现自动部署,这里说的自动部署,是指点击一个按钮(或定时执行),让计算机将最新的应用程序发布到相应的环境(UAT或PRD)中. 自动部署的意义 自动部署能省去繁琐的人工发布步骤:如配置得当,发布 ...
- 使用命令行 Subversion 访问项目源文件(SVN)
from:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cn 命令行 Subversion 入门 如果您参与的项目 ...
- Mac svn使用学习-4-客户端cli命令详解
客户端cli的使用 WC:Working Copy 你的工作区 将文件或目录版本化,这样下一次提交到存储库的时候,他们就都会被提交上去.能实现版本化的命令有: add 1.import 是否访问存储库 ...
随机推荐
- vue v-bind绑定属性和样式
这期跟大家分享的,是v-bind指令.它可以往元素的属性中绑定数据,也可以动态地根据数据为元素绑定不同的样式. 绑定属性 最简单的例子,我们有一张图片,需要定义图片的src.我们可以直接在元素的属性里 ...
- Flask实战第56天:板块管理
cms布局 编辑 cms_boards.html {% block main_content %} <div class="top-box"> <button c ...
- Python开发基础-Day19继承组合应用、对象序列化和反序列化,选课系统综合示例
继承+组合应用示例 class Date: #定义时间类,包含姓名.年.月.日,用于返回生日 def __init__(self,name,year,mon,day): self.name = nam ...
- 破解 apk
韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com 使用 ida pro 直接分析 apk . 有些代码 混淆 处理过, 就需要 动态调试 辅助 ...
- HDU 6039 Gear Up(线段树+并查集)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6039 [题目大意] 给出一些齿轮,有些齿轮是边相连,也就是拥有相同的线速度, 有的齿轮是轴相连,也 ...
- FZU 2105 Digits Count(按位维护线段树)
[题目链接] http://acm.fzu.edu.cn/problem.php?pid=2105 [题目大意] 给出一个序列,数字均小于16,为正数,每次区间操作可以使得 1. [l,r]区间and ...
- 138.括号序列(区间型DP)
3657 括号序列 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 我们用以下规则定义一个合法的括号序列: ...
- [转]SSH整合 简单的增删改查
Database 使用 Mysql , 建立User 表 CREATE TABLE `user` ( `id` int(11) NOT NULL, `firstName` varchar(20) ...
- Ubuntu 16.04安装RabbitMQ(单机版)
说明: 1.如果是做RabbitMQ方面的开发时,建议先不要了解集群的安装和部署,先安装一个单机版之后,尽快的熟悉里面的功能和特性.毕竟单机版支持的QPS相当的高.同样,集群方式也没有想象中的多点复制 ...
- java多线程加锁是对谁加锁?
1.java多线程加锁是对谁加锁? 答:当然是对共享资源加锁啊,对谁进行访问修改,就对象进行加锁.以便使多线程按序访问此共享对象 比如: 在具体的Java代码中需要完成一下两个操作:把竞争访问的资源类 ...