svn之trunk、branches、tags的含义

经常用SVN,但是有些时候我对每个目录的功能和定义仍然很模糊,于是求教于GOOGLE老师,现在收集了一篇比较好的文章,整理了一下,发上来做一个笔记,也便于不熟悉的朋友查阅!

trunk:表示开发时版本存放的目录,即在开发阶段的代码都提交到该目录上。

branches:表示发布的版本存放的目录,即项目上线时发布的稳定版本存放在该目录中。

tags:表示标签存放的目录。

在这需要说明下分三个目录的原因,如果项目分为一期、二期、三期等,那么一期上线时的稳定版本就应该在一期完成时将代码copy到branches 上,这样二期开发的代码就对一期的代码没有影响,如新增的模块就不会部署到生产环境上。而branches上的稳定的版本就是发布到生产环境上的代码,如 果用户使用的过程中发现有bug,则只要在branches上修改该bug,修改完bug后再编译branches上最新的代码发布到生产环境即可。 tags的作用是将在branches上修改的bug的代码合并到trank上时创建个版本标识,以后branches上修改的bug代码再合并到 trunk上时就从tags的version到branches最新的version合并到trunk,以保证前期修改的bug代码不会在合并。

需求一: 有一个客户想对产品做定制,但是我们并不想修改原有的svn中trunk的代码。

方法: 用svn建立一个新的branches,从这个branche做为一 个新的起点来开发

svn copy svn://server/trunk svn://server/branches/ep -m "init ep"

Tip: 如果你的svn中以前没有branches这个的目录,只有trunk这个,你可以用

svn mkdir branches

新建个目录

需求二:

产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布给客户使用,发布我们的1.0版本

svn copy svn://server/trunk svn://server/tags/release-1.0 -m "1.0 released"

咦,这个和branches有什么区别,好像啥区别也没有?

是的,branches和tags是一样的,都是目录,只是我们不会对这个 release-1.0的tag做修改了,不再提交了,如果提交那么就是branches

需求三: 

有一天,突然在trunk下的core中发现一个致命的bug,那 么所有的branches一定也一样了,该怎么办?

svn -r 148:149 merge svn://server/trunk branches/ep


    发表评论?

    0 条评论。

    发表评论


    注意 - 你可以用以下 HTML tags and attributes:
    <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

    无觅相关文章插件,快速提升流量