SVN管理公共代碼的方法


其實這個問題困擾了我很久了,但一直沒有好好去尋找解決方案,所以也一直拖着,如今稍微抽點時間研究了一下,發覺也不是很難解決。

問題具體描述如下: 假如我有一個A項目,使用了CommLib庫,另外我又有一個與A項目不相關的B項目,B項目也要使用CommLib庫,那么CommLib庫的代碼怎么管理呢?

方法1:把CommLib庫獨立出來,編譯生成DLL,A項目包含CommLib的DLL,B項目也包含CommLib的DLL。這樣一來,要A項目和B項目都不能直接修改CommLib的代碼了。但問題是:如果CommLib的代碼更新了,那還得手工拷貝給A項目一份,B項目一份,這樣多容易遺漏或出錯。

方法2:把A項目和B項目放到同一個大的目錄下,也就是整合為一個大的工程,CommLib也整合進去,這樣就可以只維護一份代碼,又不會有更新的問題了。但是:把本來不相關的項目堆在一起,就十分不合理,試想開發人員想對B項目進行修改,可他卻不得不同時檢出A項目的代碼,這多么容易誤操作,另外這樣對分工合作很不利。

那么有什么好的方法,可以做到只維護一份代碼,又不帶來管理上的麻煩? 這就需要利用到SVN的強大的“Externals”功能了,Externals就相當於外部引用,例如在A容器中引用CommLib容器中的代碼,B容器中也引用CommLib中的代碼,CommLib出現在多個地方,但實際上它只有一份,任何地方對CommLib的修改都會影響到其它地方。這種方案也不算很完美,但對我們而言,已經足夠好了!怎么做?下面以一個實際項目為例,詳細介紹:

我有一個項目,名為UUAS_WS,其SVN路徑為:
http://10.186.3.21:8080/svn/UUAS_WS/trunk
其項目目錄結構為:

它需要引用Comm公共庫,希望把公共庫的代碼放在其項目根目錄下。

公共庫的SVN路徑為:
http://10.186.3.21:8080/svn/OA_Comm/trunk
將Comm加入UUAS_WS項目后,項目目錄結構應為:

設置方法還是相當簡單的:

1, 打開容器瀏覽器

2, 打開UUAS_WS容器的屬性

3, New一個Externals

4, 填入Comm的SVN路徑和本地名稱

5, OK,OK,再寫入一些修改批注

6, OK,就完成了!這時候再對UUAS_WS執行一下Update,就能看到結果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM