svn怎么创建tag (svn标签)

1、什么是SVN(subversion)?

SVN是一款非常优秀的版本管理工具,是一个跨平台的开源版本控制系统。

2、SVN是一种集中式文件系统版本管理系统,集中式管理的工作流程如下图:

集中式代码管理的核心是svn服务器,所有开发者新来的第一天必须从服务器获取代码,然后开发,最后解决冲突,提交,所有信息都放在svn服务器上。

svn怎么创建tag,svn修改注释

3、概念解释

trunk(树干):主开发目录,表示开发时版本存放的目录,即在开发阶段的代码都提交到该目录上;

branches(分支):分支开发目录,是用来做并行开发的,这里的并行是指和trunk进行比较;

tags(标记):表示标签存放的目录,是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的,tag上不做任何代码修改。

具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯。

4、目前我们欧普开发使用的一种规范大概如下:

a.起初(项目刚开始阶段),我们的所有的开发都是基于trunk进行开发;

+trunk/ (都在这里开发)

+branches/

+tags/

b.当第一阶段上线完成并正式上线(开发、测试、文档、制作安装程序、打包等),这时候会在tags打个release_1.0的tag,代表首次上线的一个里程碑;

+trunk/

+branches/

+tags/

+release_1.0 (copy from trunk)

c.第一次上线之后又有新的需求开发(一般指不能在短时间内完成的需求),这时候会从trunk开设一个分支dev_2.0_demo_branch进行新需求开发;

+trunk/

+branches/

+dev_2.0_demo_branch (copy from trunk,此时在该分支做新的需求开发)

+tags/

+release_1.0

d.在新需求开发的同时,发现1.0上线的又有严重的bug需要改动并重新发布上线,这时候需要区分这个bug是否可以在短时间内解决(一般1天内);

I.一天内可以解决,直接在trunk改动代码并且发布,然后打个release_1.1的tag;

+trunk/

+branches/

+dev_2.0_demo_branch (继续在该分支做二期新需求开发)

+tags/

+release_1.0

+release_1.1 (copy from trunk)

II.不能在短期内解决,可能需要几天甚至个把星期,此时需要从trunk开设一个分支release_1.0_bugfix进行bug解决;

+trunk/

+branches/

+dev_2.0_demo_branch (继续在该分支做二期新需求开发)

+release_1.0_bugfix (在该分支解决一期bug)

+tags/

+release_1.0

解决完bug之后经测试无问题,再把release_1.0_bugfix的代码merge到主干trunk上面,然后打包发布,同时也需要打个release_1.1的tag

III.

e.等二期新需求开发测试完成,准备上线时,需要把dev_2.0_demo_branch的代码merge到主干,并从主干打个release_2.0的tag

+trunk/ (从分支merge代码,然后打包发布到正式机)

+branches/

+dev_2.0_demo_branch (二期需求开发完成,把代码merge到trunk)

+tags/

+release_1.0

+release_2.0 (copy from trunk)

f.如此循环执行以上步骤;

5、注意点

a.trunk是放置稳定代码的主要环境,除非你必须处理一些容易且能迅速解决的BUG,一般不要在trunk直接做开发。要在任何时间点都能保证trunk的代码随时可以正常发布到正式机;

b.当一个branch完成了,并且认为它足够稳定的时候,它必须合并回它原来拷贝的地方,也就是说:如果原来是从trunk中拷贝的,就应该回到trunk去,或者合并回它原来拷贝的父级branch;

c.除非是因为必须从一个branch中创建一个新的子branch,否则新的branch必须从trunk创建;

d.作为一个开发者,永远不要切换至、取出,或者向一个tag提交任何内容,一般tag为只读,只代表一个里程碑;