前提:代码仓库的管理均会采用svn来管理
代码目录结构的创建:
一般创建三个目录为:
-- trunk(主干)
-- tags(标签/标记)
--branches(分支)
有时在同级目录下还会创建一个wiki的目录,作为对项目的介绍等。我有时也叫tags目录为里程碑文件夹,会把里程碑版本放在此处。
tags和branches下一般为根据需要从trunk目录拷贝过来的。
tags的创建要求:
1、代码在一种平台下通过编译(必须);
2、代码编译出来的版本通过一定冒烟测试、单元测试;
3、在项目要求的平台都可以编译通过;
4、一般有一个测试包提交测试时,就需要在tags下建立对应代码标签。
tags下的代码一般不可以修改。
掌握创建分支的时机
这是一个容易引起争议的问题,事实上它取决于您的软件项目培养。没有规定通用的策略,仅在此描述三种常见的。
从不分支系统
(常用于还没有可运行代码的初始项目。)
- 用户将他们的日常工作提交到 /trunk 中。
- 用户开始提交一系列复杂更改时,/trunk 偶尔会“损坏”(无法进行编译或功能测试失败)。
优点:此策略非常容易遵守。新开发人员进入的门槛很低。不需要学习如何进行分支或合并。
缺点:无序的开发和代码可能随时变得不稳定。
旁注:在 Subversion 中,此类开发的风险要比在 CVS 中小得多。因为 Subversion 的提交是封闭单元式的,因而在其他人的提交过程中,签出或更新不会收到“部分”提交。
始终分支系统
(常用于需要进行大量管理和监督的项目。)
- 每个用户对每项 编码任务的创建或操作都是在私有分支中进行的。
- 编码完成后,原编码者、同级或经理将对所有私有分支的更改进行审查并将它们合并到 /trunk 中。
优点: 能保证 /trunk 始终都能极其 稳定。
缺点:编码者之间被人为隔离,会导致很多不必要的合并冲突。需要用户进行大量的额外合并工作。
按需分支系统
(这是 Subversion 项目所使用的系统。)
- 用户将他们的日常工作提交到 /trunk 中。
- 规则 #1:必须随时对 /trunk 进行编译并确保通过回归测试。将对违反此规则的提交者提出公开批评。
- 规则 #2:单个提交(更改集)必须小于同级所能审查的最大限度。
- 规则 #3:如果规则 #1 与 #2 产生冲突(如一系列小提交必然会扰乱 trunk),则用户应创建分支,然后将一系列更小的更改集提交到分支中。这样即可允许进行同级审查,又会不破坏 /trunk的稳定性。
优点: 可保证 /trunk 始终都能保持稳定。分支和合并的问题将较少。
缺点:将添加一些负担到用户的日常工作中:每次进行提交之前,都必须进行编译和测试。
里程碑的创建
集成人员将开发人员提交的功能集成到主干上,编译通过后提交到主干上集成了一定的功能后,创建一个里程碑版本,一般建议按周创建里程碑版本。并在tags下创建响应的代码快照,并将安装包传至指定位置。
开发人员一般于最新的里程碑版本创建分支,并在分支上工作,并在自己的分支上提交,在提交到svn之前需要编译通过。开发人员需要根据自己开发情况来同步到主干的里程碑代码。如果需要继承主干上,需要同步到新近的里程碑。
测试人员
测试人员对开发人员的代码进行测试,达到一定测试标准后,测试通过,然后提交由集成人员来集成。按需分支系统适应方式代码较少,或者参与开发人员较少
开发人员可以直接主干上提交。开发负责人来编译版本给测试。
开发人员把所有的新特性提交到主干,每日的修改提交 /trunk,新特性, bug修正和其他。新近的开发人员不能提交代码,交由有经验的开发人员验证后才能提交到主干上。
当开发小组认为软件已经做好基本发布的准备(比如,版本1.0)然后 /trunk 会拷贝到 /branches/1.0。这个主干被拷贝到“发布”分支。然后再发布分支上继续修改bug。
如果bug修正经测试达到一定的要求认为可以完成时,可以拷贝到/tags/1.0.0,这个标签被建立并放权给相关人员
向svn库提交代码要求针对每次提交到主干上的代码均需要编译通过,代码每次提交到svn上均需要添加注释。
这是本人查看文档和自己实践后的总结,有错误的地方或更好的方法,还希望大家提出。
以前只是看别人写的文章,看懂后只是实践下就收藏起来,结果后来在用的时候发现很多好的文章都找不到了,所以以后会经常做总结和学习记录。
分享到:
相关推荐
"subversion.pdf"可能是另一种关于Subversion的综合参考材料,可能包含了Subversion的最新特性、最佳实践以及常见问题解答。这本书可能适合那些希望深入理解Subversion内部机制或者想要优化Subversion使用方式的...
7. **源代码管理最佳实践**:论文部分可能会涵盖如何根据最佳实践来设计和实现用户管理系统,如代码结构、注释、测试和调试策略。 8. **安全性**:由于涉及到版本控制和用户权限,系统必须遵循严格的网络安全措施,...
培训材料通常包括实例演示、最佳实践指导和常见问题解答,这些都是帮助团队成员适应Subversion工作流程的关键。通过这些培训,开发者不仅可以学习如何有效地使用Subversion,还能了解如何在团队协作中利用它的优势,...
五、最佳实践与注意事项 1. 使用有意义的提交消息,方便日后的追踪和审计。 2. 避免在未解决冲突的情况下提交,确保数据一致性。 3. 规划合理的分支策略,避免过度分支导致的管理复杂性。 4. 定期备份仓库,防止数据...
7. **Subversion的最佳实践**: - 使用明确的提交消息,解释每次提交的原因。 - 经常更新工作副本,避免长时间不合并的分支。 - 有效地管理分支,避免频繁合并主分支。 8. **与其他工具的集成**: - Subversion...
此外,最佳实践还包括为每个重要功能或修复创建单独的分支,并且在开发分支或特性分支上进行频繁的提交(commit),以及在合并前使用rebase命令来整理提交历史,以保持代码的整洁。而分支合并(merge)应当在充分的...
4. 使用版本控制软件的最佳实践:了解并遵循Subversion社区推荐的操作规范,如避免在提交时包含临时文件。 通过深入学习《Version Control with Subversion for Subversion 1.6》,读者不仅能掌握Subversion的基本...
7. 卷动修订版(Trunk、Branch、Tag):这是Subversion中的一种最佳实践,分别用于主开发线、分支和里程碑标记。 trunk存放主要的开发工作,branches用于开发新功能或修复错误,tags则用来记录重要的发布点。 8. ...
在IT行业中,持续集成(Continuous Integration,CI)是一种软件开发实践,它强调开发人员频繁地将他们的代码更改合并到共享存储库中,并通过自动化...在实际操作中,应遵循最佳实践,预防并及时解决可能出现的问题。
对于Linux用户,这是一个重要的更新,因为Linux开发者和系统管理员通常更倾向于使用最新或较新的稳定版本以确保最佳的兼容性和安全性。 3. Linux SVN安装: 在Linux上安装"subversion-1.8.14.tar",首先需要解压...
#### Subversion的最佳实践 为了确保Subversion使用的高效性和安全性,应遵循以下最佳实践: - **定期备份仓库**:避免数据丢失,应该定期对仓库进行备份。 - **使用有意义的提交信息**:每次提交时都应该附上清晰...
提供的"Subversion版本库备份手册"可能是官方文档或社区编写的指南,详细解释了备份和恢复的步骤,包括最佳实践和可能遇到的问题。 总的来说,Subversion备份是一项关键的任务,需要谨慎对待。利用有效的备份脚本...
三、最佳实践与使用技巧 1. **优化关键字规则**:根据团队习惯,定制提交信息中的关键字规则,以确保正确的Jira问题链接。 2. **定期同步**:设置合理的同步频率,避免频繁的实时同步影响系统性能。 3. **权限...
Subversion(通常缩写为SVN)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的更改历史。...同时,保持对Subversion官方文档的查阅也是一个好的习惯,以获取最新的信息和最佳实践。
Subversion(SVN)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的更改历史。在CentOS操作系统上安装Subversion,特别是对于最小化安装的系统,可能需要手动安装必要的RPM包。以下是关于...
**Subversion使用简介** Subversion(SVN)是一款开源的版本控制系统,用于管理软件项目...无论你是新手还是经验丰富的开发者,Subversion都是一个强大且可靠的工具,帮助你在软件开发过程中实现版本控制的最佳实践。
合并的最佳实践 手工跟踪合并 预览合并 合并冲突 关注还是忽视祖先 合并和移动 常见用例 合并分支到另一分支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 使用分支 标签 建立简单标签 建立复杂标签 ...
Subversion(SVN)是一种广泛使用的版本控制系统,用于管理和跟踪文件和...理解并实施这些Subversion版本库备份的最佳实践,可以帮助配置管理员保护其团队的宝贵工作成果,确保在任何情况下都能迅速恢复业务正常运作。
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪源代码和其他文件的变更。...以上就是SVN使用的一些最佳实践和关键知识点,遵循这些原则,可以有效管理团队的代码版本并提高协作效率。