个人有个需求,希望在update时用颜色高亮出自己感兴趣的文件,目前我只对sln及vcproj文件感兴趣。
首先想到的是用TSVN的hook script(client side),但仔细研究后发现传入script的参数仅有操作路径,且通过script也不可能访问/修改Notify对话框中的信息和字体颜色。唯一的办法就是修改源代码重新编译,从TSVN官方代码库获取到了trunk source code后,按照根路径下的build.txt文档进行构建(doc\build-zh_CN.txt有些过时了,不要按照该文档进行构建),最新代码需要用到VC++10.0编译,过程中除了hunspell下affixmgr.cxx、hashmgr.cxx和hunspell.cxx三个文件由于svn的编码转换导致文件内容异常外,没什么大问题。
TSVN的代码写得很beautiful,这个要赞一下。在清晰的结构下很快对source code进行了分析,发现TSVN的操作处理代码位于src\TortoiseProc下面,而对各种操作的UI反馈主要放在SVNProgressDlg中。找到要修改的地方,添加了几行代码,用NAnt构建后,替换现装版中的对应文件,出现subversion too old问题,点开TortoiseProc.exe发现最新代码中的subversion版本已经用到了1.7.2,而TSVN对外发布的最新版却还是1.6.15,可能是开发者认为跨MinorVersion就算too old了吧。算了,不折腾了,直接拉发布版1.6.12的tag来修改吧。
1.6.12版的source code用VC++9.0编译,按照build文档调整一下与前面构建有差异的地方,值得注意的是TSVN用到了Ribbon,所以必须先安装一下vs2008 sp1补丁。在构建TortoiseProc时,有个头文件中重复声明了MFC中已经定义了的类型,导致构建失败,需要将重复定义之处注释掉。TortoiseProc一出,我的目的就达到了,由于构建的版本与我安装的一致,所以只需替换TortoiseProc.exe,经测试一切OK。
个人觉得,对TSVN的扩展还是麻烦了一点,整个构建过程花费了大量时间,建议增强hook script。