之前有介紹svn log 的命令,即可導出版本A~B之間所有的修改動作,然后復制出相應的文件(中間有一個算法去處理每一個動作,然后得到最終需要導出的文件列表,svn常用動作有:Modified、Added、Deleted、Replacing、Conflicted、Merged、Existed等)。
SVN客戶端的版本比較,我仔細研究了一下它的實現:根據選擇的版本號,下載該版本號以及當前本地版本號的二個資源文件,存放於一個臨時文件夾中,然后調用用TortoiseMerge,傳入二個文件的路徑,即可進行比較了。
svn diff 命令僅僅是在DOS窗口里輸出,沒有GUI界面那么直觀,TortoiseMerge工具彌補了這一點,當然還有其它例如:WinMerge也有類似的功能。
關於文件的導出,目前我嘗試了二種方案:
1、svn cat (輸出指定的文件)
2、svn export (導出指定的文件)
最新的版本直接使用HEAD替代即可,用法:
>svn cat -r HEAD https://xx.xml >d:\x.xml
>svn export -r verNum https://xx.xml d:\xx.xml (svn export –r num url path)
導出功能實現了,比較工具就很容易了
>TortoiseMerge /base:"D:\x.xml" /theirs:"d:\xx.xml"
【參考】: