关于SVN目录结构:
subversion有一个很标准的目录结构,如果项目名称为qtb,SVN地址为:svn://qtb/,那么标准的目录结构为:
trunk
branches
tags
这里trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。
一般情况下我们所有的开发都是基于trunk目录下进行开发,当一个版本(release)开发告一段落(开发、测试、文档撰写、制作安装程序、打包等),代码处于冻结状态(人为规定,可以基于hook来进行管理)。此时应当基于当前冻结的代码库进行打tag操作。当下一个版本或者阶段的开发任务开始,继续在trunk目录下进行开发。
此时如果发现上一个已发行的版本有很严重的bug或者有很迫切的功能需求,而正在开发的版本又无法满足时间需求的时候,这时候就需要在上一个版本上进行修改了。这时应该基于发行版的tag,做相应的分支(branch)进行开发。例如刚刚发行了1.0版本,正在开发2.0版本,如果发现1.0版本有严重的bug,这个时候就应该在1.0版本的基础上进行branch的开发。
如果按照时间顺序,具体目录结构及操作如下:
1.已发行1.0版本,代码冻结。
2.基于已经冻结的trunk,为release1.0进行打tag。此时目录结构为:
svn://qtb/
trunk(冻结)
branches
tags
+tag_release1.0(copy from trunk)
3.开始开发2.0版本,trunk此时为2.0的开发版
4.此时发现relsease1.0有严重bug需要修复,基于tag1.0进行branch的开发,此时目录结构为:
trunk(dev 2.0)
branches
+dev1.0 bugfix branch(copy from tag/release1.0)
tags
+release 1.0(copy from trunk)
5.在bugfix branch1.0进行1.0的bugfix的开发,在trunk进行2.0的开发
6.当1.0的bugfix修复完成后,基于dev1.0 bugfix branch做release。
7.根据需要选择性的把dev1.0 bugfix branch这个分支merge回trunk(什么时候进行这步操作,要根据具体情况)
上面这些就是一种很标准的开发模式,trunk永远是主开发目录,很多公司也是采用的这种方式进行开发的。它是一种集中式的开发,优点在于管理简单。
关于分支和主干的合并(branch & merge)的操作请点击这里
SVN打tag的简单流程:
小乌龟客户端:
1.进入版本的目录,点击右键,选择ToroiseSVN;
2.选择Branch/tag;
3.在to path中输入放置tag的所在目录和文件名,如/tag/AAA.2.1.4.20131211;
4.在Log message中输入tag的描述信息。
webstorm或者其他IDE平台(具体操作可能有差异):
1.点击右键,选中subversion属性;
2.点击Branch or Tag;
3.选择Repository Location选项,表示复制svn上的代码( 选择另外一项,可以从本地文件进行复制);
4.在copy to 中选择Bracnch or Tag;
5.在base url 中输入指定放tag的目录;
6.在name中输入文件名;
7.在Comment中输入tag描述(不输入的话,会创建失败);
8.点击ok就完成了打tag的流程。
如果你阅读完本文仍有疑问的话,可以在评论区留言,谢谢!