以下为个人总结。

内容规范

  • 代码库中不要提交和本地环境相关的文件。如Android工程中的local.properties(内含本机SDK的绝对路径),如果此类变量和开发代码有所耦合,应该抽离出来。
  • 忽略与本地环境相关的配置文件。如使用WebStrom时产生的 .idea 文件夹,iOS工程中的 xcuserdata、xcworkspace、xcshareddata目录。
  • 忽略临时文件/目录。如Android工程中的bin、gen、obj、build 目录。

操作规范

  • 及时更新。更新之后再进行修改,可以降低冲突概率。
  • 及时提交。方便他人及时更新,同样,可以降低冲突概率。
  • 解决冲突。更新之后碰到冲突不必紧张,涉及到功能模块重叠的,和提交者做一下确认。
  • 不同模块分开提交。方便他人有选择地更新,也方便版本管理和回退操作。
  • 调试无误之后才能提交。编译有误,或有明显BUG的修改不能提交。
  • 不要用覆盖文件的方式去修改文本。那样可能会丢失修改历史。
  • 注释。注释一定要让自己看懂,让别人看懂本次提交的修改。
  • 同步修改。一定要用确认好Rev版本号,使用merge的方式,而不能手动重新敲代码。

注释约定

每次提交都有写注释,注释一定有足够的信息量反映出本次修改。

  • 普通修改应该描述清楚修改了哪个功能模块,新增了什么功能;如果发现一句话描述不出修改内容,说明你可能在试图提交耦合的修改,请尽量拆分。
  • merge 操作,merge 操作的提交,要注明 merge 的源地址和区间,无需描述功能,毕竟根据地址和区间可以追根溯源。
  • 里程碑,建议用命令行去新建里程碑,并将整个命令写入注释。
注释模板
1
2
3
4
5
6
## [本次修改概述]
[细节简述]
+) 表示增加了功能
*) 表示对某些功能进行了更改
-) 表示删除了文件,或者删除了某些功能。
b) 表示修正了具体的某个bug
样例
1
2
3
4
5
6
## 控件的调用时机不当导致闪退,已修正
b) 解决首页闪退的问题
+) 新建自定义控件A
+) 新建自定义控件B
*) 修改了控件的调用时机
-) xxx.jar
里程碑注释
  • 将 cp 的目标地址为 tags 文件夹,名称为 工程名_工程版本号
  • 把操作的日期,和操作的命令行注释上去
  • 把命令直接贴到注释上,操作日期、源地址、源Rev、源工程版本号就都有了;即使误操作,根据命令也有迹可循。
创建里程碑命令示例
1
2
svn cp https://MY_PROJECT/trunk/proj@7 https://MY_PROJECT/tags/proj_v1.0.0 -m "## 2016-04-19
svn cp https://MY_PROJECT/trunk/proj@7 https://MY_PROJECT/tags/proj_v1.0.0"