SVN管理公共代碼的方法 以及 linux下無法checkout公共目錄

SVN管理公共代碼的方法

引用:http://www.cnblogs.com/guogangj/archive/2012/03/15/2398170.html

 

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

問題具體描述如下: 假如我有一個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路徑爲:
https://192.168.1.1/svn/UUAS_WS/trunk
其項目目錄結構爲: 

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

公共庫的SVN路徑爲:
http://192.168.1.1: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,就能看到結果了。

 

如果在linux中無法checkout出共享目錄 執行以下命令:

gedit /etc/hosts

添加 

192.168.1.1   服務器名稱

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