现在的位置: 首页 > 综合 > 正文

SVN管理公共代码的方法

2012年12月24日 ⁄ 综合 ⁄ 共 983字 ⁄ 字号 评论关闭

其实这个问题困扰了我很久了,但一直没有好好去寻找解决方案,所以也一直拖着,如今稍微抽点时间研究了一下,发觉也不是很难解决。

问题具体描述如下: 假如我有一个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,就能看到结果了。

抱歉!评论已关闭.