TortoiseSVN 最新版下載及配置

TortoiseSVN 最新版下載及配置

爲了讓svn在submit時自動把版本信息更新到源代碼文件,決定試試svn:keywords。打開config文件(Windows平臺文件位置:%APPDATA%\Subversion\config),修改如下:
[miscellany]
enable-auto-props = yes // 默認是沒有打開的

[auto-props]
*.h = svn:keywords=Id    // 這幾行是新添加的
*.inl = svn:keywords=Id
*.cpp = svn:keywords=Id

在源文件中,加入$Id$作爲版本信息的點位符。submit,果然$Id$被替換爲了版本信息。由於$Id$是顯示的國際標準時區而不是本地時區。搜索發現$Date$用的是本地時間。於是,再次修改config文件,把Data等關鍵字添加上:
*.h = svn:keywords=Id Date Rev Author URL
*.inl = svn:keywords=Id Date Rev Author URL
*.cpp = svn:keywords=Id Date Rev Author URL

並修改源文件,使用$Date$等關鍵字。Submit後,卻發現並沒有替換。網上有人說,可能是文件變成二進制文件引起的,但發現並不是這個原因,因爲只要換爲$Id$就又可以替換了。嘗試多種情況,無果。無奈,繼續搜索。在svn的文檔中找到這麼一段:

enable-auto-props

This instructs Subversion to automatically set properties on newly added or imported files. The default value is no, so set this to yes to enable Auto-props. The auto-props section of this file specifies which properties are to be set on which files.


原因終於找到了!config中的配置僅能夠在新添加文件時生效。此時,去檢查發現,確實只有Id被添加在文件的屬性中了,後來在config新添加的關鍵字都沒有出現在這些文件的屬性中。因此,只能夠手動去爲這些先前已經添加的文件添加關鍵字屬性。

手動爲這些文件添加好這些關鍵字屬性後,submit,替換已經能夠工作了。但卻遇到了另外一個問題。由於我使用的VS生成的文件默認編碼是gb2312的(與操作系統中的區域設置一致),而SVN的所有Log、屬性等信息都是使用utf-8編碼的。當svn把包括有漢字的時間信息(別忘了,$Date$返回的是本地區域的時間信息)替換源文件中的$Date$時,svn並沒有去檢測目標文件的編碼,而是直接把utf-8編碼的數據插入到了gb2312編碼的文件中。於是,亂碼出現了。

最後,我還是放棄了$Date$,回到了$Id$。並不是因爲編碼的問題,而是因爲$Date$的信息太冗餘了。另一方面,使用標準時區也有好處的,畢竟是標準時間嘛。對於編碼的問題,爲了更好的與svn協助,最終把所有文件模板轉換成了UTF-8編碼,這樣也可以儘量避免未來出現問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章