• 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,就能看到结果了。

  • 相关阅读:
    PHP 时间转换Unix 时间戳
    PHP中include()与require()的区别
    PHP substr_replace() 函数
    写了个jQuery无缝滚动小插件
    Orchard代码学习笔记 1. 入口
    也作一下装配脑袋的Expression习题
    [转]IIS7.5中神秘的ApplicationPoolIdentity
    Spring.net AOP异常记入单独日志文件
    [源码学习]Razor在VS调试配置
    [备忘]WPF的Colors类
  • 原文地址:https://www.cnblogs.com/guogangj/p/2398170.html
Copyright © 2020-2023  润新知