個人有個需求,希望在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。