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只是当作cvs,也从来没有仔细看过文档,直到今天用到,才去翻看svn book文档,惭愧
需求一:
有一个客户想对产品做定制,但是我们并不想修改原有的svn中trunk的代码。
方法:
用svn建立一个新的branches,从这个branche做为一个新的起点来开发
代码
svn copy svn://server/trunk svn://server/branches/ep -m "init ep"
<script>render_code();</script>
Tip:
如果你的svn中以前没有branches这个的目录,只有trunk这个,你可以用
代码
svn mkdir branches
<script>render_code();</script>
新建个目录
需求二:
产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布给客户使用,发布我们的1.0版本
代码
svn copy svn://server/trunk svn://server/tags/release-1.0 -m "1.0 released"
<script>render_code();</script>
咦,这个和branches有什么区别,好像啥区别也没有?
是的,branches和tags是一样的,都是目录,只是我们不会对这个release-1.0的tag做修改了,不再提交了,如果提交那么就是branches
需求三:
有一天,突然在trunk下的core中发现一个致命的bug,那么所有的branches一定也一样了,该怎么办?
代码
svn -r 148:149 merge svn://server/trunk branches/ep
<script>render_code();</script>
其中148和149是两次修改的版本号。
分享到:
相关推荐
如果在`trunk`或`branches`上发现了需要修复的bug,可以在`branches`上修复,然后从对应的`tag`到`branches`的最新版本进行合并,以确保历史版本的修改被正确记录。 在实际操作中,以下是一些典型场景的应用: - *...
- **代码回滚困难**:当发现bug时,在开发目录直接修复,这可能导致提交到测试服务器的代码包含其他人的改动,增加了测试难度。 这种管理方式不仅降低了开发效率,还可能导致预发布环境不稳定,增加正式环境的风险...
6. tags目录:tag目录用于存放项目的各个稳定版本,通常在特定版本开发完成后,会从trunk中检出一个快照版本到tags目录中,用以封存该项目的特定状态,方便以后的查看和部署。 7. Maven在SVN中的应用:Maven是一个...
- **分支创建**:开发新功能或版本时,在受控库的某个版本上创建新的分支。 - **开发**:开发人员在自己的子目录下完成代码编写和单元测试。 - **合并请求**:开发完成后,向版本管理员提交合并请求,包括对代码的...
- **阶段性版本**:当某个版本达到一个稳定的状态并准备发布时,可以从`trunk` 复制一份到`branches` 下作为稳定的版本继续开发和维护。 - **定制化版本**:如果项目需要针对不同的客户需求进行定制,可以在`...
在软件开发过程中,尤其是前端开发,代码版本管理是至关重要的,它可以帮助团队协同工作,跟踪代码变更,并方便地回滚到任何历史版本。本文主要讨论的是两种前端代码版本管理机制,一种是基于SVN(Subversion)的...
- **用途**:主要用于日常开发和维护,所有的修改都应该首先合并到Trunk,然后进行测试。 - **管理规则**: - 只保留一份最新的基线版本; - 不直接在此分支上进行功能开发,仅允许修复bug; - 上线前需要经过...
开发人员通常在此分支上进行日常开发工作,每次提交都会反映到主干上。当项目准备发布新版本时,这个分支的代码是最接近产品形态的。 2. **branches**(分支):分支用于隔离不同的开发任务或实验性功能。例如,你...
SVN(Subversion)是一种版本控制系统,用于管理文件和目录的版本历史,它允许用户将文件存放在中心服务器,然后由团队成员从服务器上取回最新版本,进行编辑后再提交回服务器。此过程能够确保团队成员的工作不会...
日常的开发工作都在这个目录下进行,每次提交的代码都是项目当前的最新状态。trunk中的改动会直接影响到后续的构建和部署。 2. **branches**:分支目录用于存放阶段性的release版本或开发新功能。例如,当需要为...
- **发布版本**:当版本1.0开发完成并发布后,在`tags`目录内打标签`tag_release1.0`。 - **修复bug或新增功能**:如果发现已发布的版本1.0存在bug或需要新增小功能,基于`tag_release1.0`创建分支进行开发。 - *...
- **源代码的存放**:按照模块或功能分类,存放在/trunk/src/目录下。 - **SQL的语句存放**:通常存放在/trunk/sql/目录下。 - **发行文档的存放**:如用户手册、安装指南等,存放在/trunk/docs/release/目录下。 #...
版本维护还包括版本的迁移,如从开发分支迁移到测试分支,由开发工程师操作,通常在开发责任人提交测试申请或开发过程中进行测试时进行。 通过遵循这些规范,软件开发团队可以有效地协作,保证代码质量,减少错误和...
团队成员通常在这里进行日常开发工作,提交的代码会直接影响到项目的主线。 2. **分支目录(branches)**: - `branches`用于创建项目的不同分支,比如用于新功能开发、bug修复或者特定版本的维护。每个分支下可以...
当项目达到一个重要里程碑或者发布新版本时,通常会在tags下创建一个对应版本的标签,这相当于对当前代码的一个快照,便于日后回溯或参考。 4. **doc**:文档目录,存放项目相关的文档,如设计文档、用户手册、API...
- 开发大型项目时,不应直接在trunk中进行开发,而是应在分支上完成新功能或修复,然后合并到trunk。 - 对于特殊需求或定制版本,应在分支上开发,避免对主线代码造成过多影响。 - 提交前确保代码稳定,避免提交...
`tags`用于存放不同版本的发布快照,`trunk`是主开发分支,`branches`则用于分支开发。工程内部目录结构进一步细化,便于分类管理各种文件。 5. **分支管理**:推荐设立主版本开发、分支版本开发和发布测试三个分支...
开发流程通常是:在`trunk`上进行日常开发,完成一个里程碑后,将代码复制到`tags`以创建一个不可更改的版本记录。如果需要在旧版本上修复bug或添加紧急功能,从`tags`对应的版本创建一个`branches`,在分支上进行...
- **Branches**:项目组所有成员都有读写权限,便于开发人员在各自的分支上进行开发工作。 - **Tags**:项目组Leader拥有读权限,不允许任何人直接修改tag中的文件。这有助于保持版本的一致性和准确性,防止意外修改...