• [SCM]源码管理 SVN:externals


    svn的外部定义svn:externals

    转自:http://blog.csdn.net/jaconey/archive/2008/05/15/2448986.aspx

    解决你的外部依赖 -- svn:externals

    在日常的项目版本管理中, 根据自己的需要, 我们很有可能需要把不同的repository放到不同的目录中, 又或者把几个repository放到一起. 多数时候, 这都是为了解决build中的依赖, 所以这种"个性化"的结构是应该共享, 成为版本的其中一个部分. 否则项目成员就需要各自建立这样的结构, 风格不一, 也有可能造成遗漏.

    Subversion 内嵌的property就支持这样的一种属性:svn:externals.

    我们先来看一个例子: 假如我们有个calc的工程. 它依赖于一些第三方的声音文件, 放在了red-bean.com中. 先来看看设置好的属性:
    $ svn propget svn:externals calc
    third-party/sounds http://sounds.red-bean.com/repos

    这样,当我们需要checkout这个calc项目的时候, 会出现这样的效果:
    $ svn checkout http://svn.example.com/repos/calc
    A calc
    A calc/Makefile
    A calc/integer.c
    A calc/button.c
    Checked out revision 148.
    Fetching external item into calc/third-party/sounds
    A calc/third-party/sounds/ding.ogg
    A calc/third-party/sounds/dong.ogg
    A calc/third-party/sounds/clang.ogg


    可以看到, 第三方的文件也一同被checkout下来.

    由于外部的文件是不可控的,如果总是取用外部最新的修改, 有可能和我们现有版本不配套, 现有的build就有可能不成功. 所以subversion也提供了指定特定的revision的功能. 假设外部项目和我们配套的版本是revision 21, 我们可以这么做, 如:
    $ svn propget svn:externals calc
    third-party/sounds http://sounds.red-bean.com/repos
    third-party/skins/toolkit -r21 http://svn.red-bean.com/repos/skin-maker

    这样,当我们下次checkout的时候, 就只会取到revision 21的版本, 这样就不会影响到我们现有的build.



    上面提到的主要是获取svn:externals的, 如果需要设置这个属性, 我们主要用的是 svn propset 或者 svn propedit.

    需要注意的有两点,
    由于svn:externals需要指定的外部项多数都是多行的, 所以推荐使用propedit进行编辑.
    这个属性只对目录起作用, 不可以应用在独立的文件当中.外部定义不可以指向相对路径如http://www.cnblogs.com/skins/myskin)。通过外部定义创建的工作拷贝与主工作拷贝没有连接,

    当完成了对svn:externals的修改以后, 每次当你使用update的时候, 相应的外部文件也会被检查并且更新(当然, checkout的时候也是如此).

    由于属性也被纳入了subversion的版本管理中, 所以你对目录的修改都是可以上传到服务器上, 和其他的项目成员共享, 并基线化.

    这个功能看上去很美, 就像是link一样, 但是也有它的一些先天的不足, 就是这个属性是静态的! 如果svn结构出现变化的时候, 属性并不会根据你的修改而改变, 这些这里引用svn book中的一例子.

    而且,当使用了https作为commit的时候, 也有可能出问题. 这里就留点小关子, 不再这篇文章中赘述, 有兴趣的朋友请阅读SVN book的Charter3, 一定让你获益不少.

    参考:
    http://zhongkun.72pines.com/2009/12/15/svnexternals-%E5%B1%9E%E6%80%A7%E4%B9%8B%E4%BD%BF%E7%94%A8/
  • 相关阅读:
    ImageView的属性android:scaleType作用
    android程序内存泄漏的原因和解决办法
    如何在Android使用Rest服务从客户端调用webservice
    android系统如何自适应屏幕大小
    使用GitHub进行版本管理
    Android中dp、sp、px的转换和区别。
    软件开发:手机应用程序开发注意事项
    学用MVC4做网站二:2.2添加用户组
    学用MVC4做网站二:2.1浏览用户组
    学用MVC4做网站二:2.4删除用户组
  • 原文地址:https://www.cnblogs.com/itech/p/2041975.html
Copyright © 2020-2023  润新知