上一篇部落格簡單講了在合作開發項目時使用SVN的準備工作,而這篇部落格則重點在使用中的規範也好,注意事項也好或者使用規則也好.簡單說一下使用他的小小經驗!
在合作開發項目開始前,賈琳師哥向我們提出了使用SVN的規範,如下:
SVN要求(非常重要):
1、程式需定期編譯通過後上傳SVN,每天可上傳多次,根據個人程式開發進度決定,但每天晚下班前必須將當天的程式編譯調試通過並上傳SVN。
2、每天早上上班首先需要更新SVN最新版本。
3、在程式中添加頁面、刪除頁面及修改頁面命名時,需要先更新全部程式特別是解決方案檔案,然後再做添加或者刪除頁面以及修改頁面名稱,做完這類操作後需立刻上傳SVN,以免造成解決方案衝突.
以下檔案不允許提交到SVN上,應在本地通過SVN用戶端添加到忽略列表中。
1、解決方案的suo檔案
2、工程的bin檔案夾和obj文
第一次看了,沒有太大的重視,可是在使用中,我們出現了,版本沒有說明,合作之間出現了衝突,自己開發的模組影響了其他人的模組等等問題.回過頭來再看這些內容,感覺都是非常重要的.下邊我一一為大家解說並完善一下細節!
首先來說,在公司我們都是合作開發的,而且SVN在公司的使用非常普遍,就算不是我上篇講的軟體,也是非常類似的版本管理軟體,都是大同小異的.使用SVN我們就將自己假設到公司成員的角度,來看一切問題.
一,程式定期編譯通過後上傳SVN,也就是我們上傳的伺服器的程式必須能正常運行,不要因為自己修改模組,使整個程式癱瘓,影響大家的工作. 上傳SVN伺服器時,我們需要按照步驟:
為什麼明天晚上要必須將編譯通過的程式上傳呢?
1,因為在公司,首先可以讓專案經理知道自己每天都在幹活,並瞭解自己的進度;
2,其次可以很好避免我們沒有備份好,丟失的情況;
3,再者可以避免由於我們修改過多,如果出現衝突難於解決衝突的情況!
二,每天早上更新最新版本,這個是保證我們可以在最新版本上修改,也是可以避免出現衝突的有效方法之一!
三,第三點非常重要,意思也就是在做添加頁面、刪除頁面及修改頁面命名時,需要我們先更新解決方案,然後再做上述操作,然後馬上上傳。記得一定要馬上。
這是為什麼呢?這就涉及到一個副檔名為.csproj檔案,先看一下百科:
C#專案檔的副檔名,它是“C SharpProject”的縮寫。.net開發環境中建立項目時,會產生 .csproj檔案,這是C#的工程檔案,其中記錄了與工程有關的相關資訊,例如包含的檔案,程式的版本,所產生的檔案的類型和位置的資訊等。
也就是說一個工程就一個.csproj檔案,因為雖然我們在合作開發時分工明確,各自負責各自的模組,但是當我們做上邊提到的幾種操作時,都會修改此檔案。如果期間兩個人都進行了此操作,上傳時,後一個上傳的人就會出現衝突,也就必須解決衝突,這是見比較麻煩的事。而我們先更新,再修改,然後馬上上傳,就是為了保證發成衝突的幾率為最低。
四,.suo檔案,.bin檔案,.obj檔案為什麼不上傳呢?先看下這幾個檔案的作用:
1,suo(solution user options)是一種檔案的格式。*.suo解決方案使用者選項,記錄所有將與解決方案建立關聯的選項,以便在每次開啟時,它都包含使用者所做的自訂設定。VS布局包括:監視器1234的變數列表、斷點標記及開關狀態、輸出視窗錯誤視窗等的分布及其懸浮狀態,還有項目卸載狀態標記。
也就說.suo檔案時記錄使用者對解決方案一些設定,方便下次開啟更符合使用者的習慣呢。當然,如果刪除,在開啟解決方案是,就會重建立立,只不過哪些記錄的斷點哈,各種視窗的布置沒有了。所以這個檔案我們不用上傳.Suo檔案,在本地產生即可。
2,bin和obj檔案,我麼看一下他裡邊的檔案:
在obj檔案中也都是一些Dll檔案,而這些Dll檔案都是我們用項目產生的,
也就說這兩個檔案中的內容,我們都可以通過解決方案來產生,當然就不用上傳了,我們下載解決到本地,直接產生就可以在本地產生這兩個檔案夾。
這樣大家就明白為什麼不用上傳這三個檔案了吧。下邊對於上邊提到的衝突,我想說一下解決衝突的方法:
假如兩個人出現了衝突,證明你們同時修改了同一個或多個檔案了,這樣就必須犧牲一個人的成果,把另一個人的成果上傳伺服器為最新版本(通過協商)。當然那個犧牲的並不說找不到了,首先,他可以提前保留備份,能更新到最新版本時,再修改,再上傳。當然我們可以找到SVN中的任何一個版本,下載下來進行修改,或者看以前的功能。下邊就是我們的版本更新,紅色框為沒有添加日誌的,這樣我們看就不知道此版本是改過什麼的。
雖然衝突可以解決,但是能避免盡量避免,畢竟還是比較麻煩的。
綜上為使用SVN的經驗淺談,主要是根基賈琳師哥給的SVN規範,進行闡述。有什麼問題還請指出,多多交流!