[版本控管] 版本控管 Commit 需要注意的事項以 dotNet 與 SVN 為例
- 2011-10-20
- 25833
- 0
- Subversion SVN 版本控管
上一篇介紹了送交(Commit) 的作法看似很簡單,但是還是有些觀念要說明,因此才有了這一篇的出現,在我們開始使用版控以後對於一些平常的習慣需要改變一下,為的是不要讓檔案庫(Repository)髒掉,並且讓其他成員可以了解到每次的送交(Commit)是做了什麼以及為什麼。
送交(Commit)的時機
在剛開始使用版控的時候很有可能因為怕怕的,所以都是完成了一整個功能以後才做送交(Commit),這行為不是說不好,但是很不建議,試想如果你是把整個功能完成以後才送交(Commit)那發生問題的時候你只能選擇整個還原,對於已經擁有了版控的你來說,這是很不明智的行為,所以 demo 建議的送交(Commit)時機為一個小功能或模組完成後就送交(Commit)一次,如果剛開始你還無法明確的分別你要送交(Commit)的時機,那建議你只要你覺得一部分功能完成了、測試過了、編譯沒錯後就可以執行送交(Commit)了。
送交的記錄
送交(Commit)的時機已經說明了,還有一個很重要的點就是送交(Commit)的記錄,也就是 Log ,當你使用了版控一定要習慣寫 Log ,怎麼樣的 Log 才叫做好其實見仁見智,最好的分辨方式就是寫完 Log 後自己重頭唸一次,想想如果三天後你看到這段 Log 你可不可以知道這次送交(Commit)你做了什麼事情,還有如果你想回覆某個功能的時候看到這 Log 你是否可以明確的知道該回覆哪一版,以下就來示範一下 Log
這就是很爛的 Log ,這次的異動我們修改了 文字檔的內容又增加了一個新的資料夾,但是 Log 卻只有寫更新檔案,對於這四個字我們並不能說有錯,但是對於 Log 來說這完全沒有達到標準,至少要改成下面這樣
如果你想寫更詳細一點,可以在 Message 區塊中按滑鼠右鍵選擇「Paste filename list」就會出現每一個異動的狀態以及檔案名稱
程式或文件的清潔
之前在寫程式時如果需求改變或是要測試寫法很常會利用註解將舊 Code 註解掉,這樣往後想要復原時才方便,但是你現在已經有版控了,請在送交(Commit)前都把這些註解刪除,這些註解不但對於往後沒有任何價值對於其他成員也沒有參考的意義(還沒送交前你依然可以利用註解來保留舊 Code 但是測試完畢後記得刪),如果往後有需要恢復到舊 Code 的時候只要你的註解寫的夠明確,恢復就不會是大問題了。
不要隨意變動檔案大小寫
習慣使用 Windows 系統的網友對於大小寫的敏感度相對是較低的,但是 Svn Server 的對於大小寫卻是敏感的,當你送交(Commit)了以後還異動檔案大小寫會導致 更新(Update) 正常但送交(Commit)失敗的情況,這情況要解很麻煩,建議你決定好就不要改了。
不要提交沒意義的檔案
在那遙遠的年代有人會使用
- 企劃書_V1.doc
- 企劃書_V2.doc
- 企劃書_V3.doc
這種命名法做版控,但現在你已經有了版控系統,請刪除這些無意義的檔案,不要再用原始人的招數了。
設定排除的檔案
這和不要送交沒意義的檔案有異曲同工之妙,但是這更重要,因為系統本身就會有一堆一定會產出的檔案而且每個人都不一樣,所以你送交了也是毫無意義的,反而會造成這些檔案每次都出現在送交(Commit)清單中混淆視聽,排除檔案的方式很簡單,利用圖說就可以解釋的清楚了。
對要排除的檔案按「滑鼠右鍵」選擇「Add to ignore list」再來你有兩個選擇
- 明確指定只有這個檔案不再做送交(Commit)
- 指定附檔名,只要符合相同附檔名的都不再做送交(Commit)
請依據需求設定
不過如果檔案已經送交(Commit)過了,就無法利用這種方式做排除請看下一個方法。
對檔案按「滑鼠右鍵」→「TortoiseSVN」→「Delete and add to ignore list」→選擇你要的方式。
請注意以上的排除設定還是需要執行 Commit 才會有效的
再來會遇到一個新問題,如果不小心設定錯誤勒?要去哪裡還原?別急別急,這裡馬上告訴你!
在專案目錄的任何一處按「滑鼠右鍵」→「TortoiseSVN」→「Properties」
- 在 Property value 中,將你設定錯誤的那一行刪掉
- 打勾的話可以將這設定套用到子目錄去
記得依然是要 送交(Commit)才有用
以上設定的方式都是對於【資料夾】設定,也就是說每個專案你都需要設定一次這些需要排除的檔案或是副檔名,這是很累人的,因此還有一種方式可以對於整個世界的指定檔案來排除(因為他是設定在 SVN Client 上)設定方式就是進入TortoiseSVN 的設定頁
將你要排除的設定到 Global ignore pattern 內,因為這是軟體的設定因此不需要 送交(Commit)就可以生效,並且在你這台電腦內這寫當按都不會再出現在送交名單中。
以下這些是 .NET 開發者使用 Visual Studio 時一定要排除的檔案,列出來供各位參考
- .suo(這是使用者定義檔)
- .user(這是使用者定義檔)
- .schemaview(這是資料庫專案檔)
- .docstates(這是 Power Tools的檔案)
- 整個 Bin 資料夾
- 整個 Release 資料夾
- 整個 Obj 資料夾
回應討論