同时使用SVN和git

615 阅读2分钟

同时使用SVN和git

背景

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

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

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

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

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

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

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

环境配置

SVN

以使用ToroiseSVN为例:

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

git

  1. 配置git环境

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

cd 项目
git init

3. 编写.gitignore文件,配置常规开发需忽略的文件,再加上SVN的版本库信息.svn/

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

  2. 把文件增加进git

git add .

6. 提交初版代码

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的检出操作!