主目录里分三个子目录:trunk,branches,tags(根据是否能编译出war文件来区分。独立打包成war包的都需要分三个子目录),jenkins配置时trunk对应测试环境,branches对应集成开发环境,tags对应pre(预生产)和生产环境
### SVN开发规范详解
#### 一、SVN目录结构及用途
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码版本。在实际应用中,SVN通过合理的目录结构组织代码,便于团队协作和版本控制。以下是根据给定文件中提到的目录结构及其用途:
1. **Trunk**
- **定义**:Trunk通常被视为项目的主干,存放最新的稳定版本的代码。
- **用途**:作为日常开发的基础,一般用来进行日常的开发工作,并且经常保持最新状态。
- **权限设置**:项目组Leader拥有读权限,可根据需求开放写权限;其他成员默认无权限。主要目的是为了保证主干的稳定性,避免不必要的错误引入。
2. **Branches**
- **定义**:Branches是为特定功能或版本创建的分支,通常用于开发新功能或修复特定问题而不干扰主干。
- **用途**:用于并行开发不同的特性,每个分支可以独立开发、测试和调试,直到准备合并回主干。
- **权限设置**:项目组所有成员都拥有读写权限。这意味着每个人都可以在此目录下创建自己的分支来进行开发。
3. **Tags**
- **定义**:Tags用于标记某个版本的快照,通常是在发布版本之前创建的只读副本。
- **用途**:保存重要的里程碑版本或发布版本,以便于日后回溯或复现特定版本的状态。
- **权限设置**:项目组Leader拥有读权限,不允许任何人直接修改tag中的文件。该目录的操作通常由持续集成工具如Jenkins自动执行,确保版本的一致性和准确性。
#### 二、目录权限管理
- **Trunk**:项目组Leader拥有读权限,可以根据需要开放写权限。主要是为了保证主干的稳定性和质量,避免不必要的错误引入。
- **Branches**:项目组所有成员都有读写权限,便于开发人员在各自的分支上进行开发工作。
- **Tags**:项目组Leader拥有读权限,不允许任何人直接修改tag中的文件。这有助于保持版本的一致性和准确性,防止意外修改导致的问题。
#### 三、SVN使用规范
1. **先更新,再提交**
- 在提交代码之前,务必先更新本地仓库,确保自己的代码是最新的,并且与团队的最新版本保持同步。
- 如果在修改期间有人也更改了同样的文件,那么提交可能会失败。如果多人修改同一行代码,需要与之前的开发者沟通解决冲突,并共同测试确保不会影响其他功能。
2. **不要提交不能通过编译的代码**
- 在提交代码前,需确保代码能在本地正常编译,避免因为依赖问题或其他编译错误影响其他成员的工作。
- 特别是引入第三方类库时,要确保项目组成员都能正确安装并使用这些类库,保证项目的可移植性。
3. **每次提交必须书写明晰的标注**
- 提交代码时,需要提供清晰明了的提交信息,包括修改的内容、原因等。这有助于团队成员快速了解本次提交的目的和作用,对于后续维护和版本追踪非常重要。
4. **提交时注意不要提交本地自动生成的文件**
- 避免提交像`.classpath`、`Thumbs.db`、`.obj`、`.class`等本地生成的文件,这些文件可能因环境差异而导致冲突,影响团队其他成员的工作效率。
5. **不要提交自己不明白的代码**
- 在引入第三方代码之前,确保对其有足够的了解,避免引入未知的风险因素。
6. **慎用锁定功能**
- 锁定文件可能会阻碍其他团队成员的工作,尤其是在多个人同时开发的情况下。除非是处理无法自动合并的文件类型,如图片、视频等,否则尽量避免使用锁定功能。
7. **提交频次**
- 理论上各子系统每天提交一次,但不是强制性的。建议在完成一个功能模块后及时提交,确保代码的稳定性和可追溯性。
通过以上规范的执行,可以有效地提高团队的开发效率,降低代码冲突的风险,确保项目的顺利进行。