从其它平台迁移而来


背景

一般情况下,企业内部多数是使用SVN来进行版本控制的,原因通常也就两个字——简单:

  1. 安装简单,无论服务端还是客户端

  2. 操作简单,即使非技术人员也能很快学会

  3. 管理简单,建目录、开账户、分权限,基本就能完成95%以上的需求

SVN是很强大的,但是使用者的水平差距也是很巨大的,结果就是多数情况下只有一个分支,大家都往里面各种提交,当然,有好好管理的不含在内。

不过,用过git的人,尤其是开发人员,估计都会喜欢git多一些,那么,同时使用SVNgit就会爽很多。

以下就以企业内使用SVN,开发者使用git为例进行说明,其中:SVN遵守企业内的版本控制使用工作流程,git遵守git类的工作流程。

环境配置

SVN

以使用ToroiseSVN为例:

  1. 任意文件夹中(最好是非SVN项目,减少菜单干扰)右键->ToroiseSVN->设置->常规设置->Subversion->全局忽略样式(全局设置不会提交到版本库,避免对仓库信息的修改而影响到别人),在原有基础上追加以下内容:
1
.git .gitignore .README.md
  1. 拉取SVN代码

git

  1. 配置git环境

  2. 在要使用gitSVN项目下建git版本库的初始化

1
2
cd 项目
git init
  1. 编写.gitignore文件,配置常规开发需忽略的文件,再加上SVN的版本库信息.svn/

  2. 再次拉取SVN代码,确保代码最新

  3. 把文件增加进git

1
git add .
  1. 提交初版代码
1
git commit

工作流

分支

  • master:主分支,与SVN保持一致

  • dev:开发主分支,主要用于合并开发完成的内容

  • ...:任务分支(含BUG修复),具体的开发任务,开发完成后要合并到dev

具体流程

--- title: SVN+git工作流程 --- graph TD subgraph m[master分支流程] direction TB m1[切到master分支] m2[检出SVN代码] m3[git提交] m4[合并dev代码] m5[SVN提交] m1 --> m2 --> m3 --> m4 --> m5 end subgraph d[dev分支流程] direction TB d1[切到dev分支] d2[合并工作分支内容] d3[合并master分支内容] d4[根据情况调整] d5[提交] d6[切回master] d1 --> d2 --> d4 d1 --> d3 --> d4 --> d5 --> d6 end subgraph w[工作分支流程] direction TB w1[新建/切到工作分支] w2[根据情况合并dev分支内容] w3[开发] w4[提交] w5[根据情况切对应分支] w1 --> w2 --> w4 --> w5 w1 --> w3 --> w4 end m3 -.-> d -.-> m4 d1 -.-> w -.-> d2

注意:必须在master分支才能进行SVN的检出操作!