我的 git-svn 工具使用流程

git-pony-svn-ogre

本文面向有 git 使用经验,想了解 git-svn 工具的开发者。

习惯用 Git 后的程序员一定对 SVN 不屑一顾。不过目前的开发环境必须使用 SVN,用起来不开心。还好 Git 提供了对 SVN 的支持,让我们可以像使用 Git 一样使用 SVN。当然一些 Git 的高级功能还是无法支持的。
—— John Wong @GitHub

相关阅读

  1. macOS git-svn 不能用的问题
  2. Git 与其他系统 - Git 与 Subversion(Git 官方)

从 SVN 服务器获取代码

$ cd /your/local/path
$ git svn clone svn://example/path

从 SVN 服务器中见代码库克隆到本地,并且初始化为 git 仓库。

本地代码管理

使用 git-svn 的分支功能,使得本地代码的修改可以在非主分支上进行。当我们在本地完成一个模块需要 commit 操作时,我们不必像 SVN 那样直接提交到远程 SVN 仓库中,而是像操作 git 仓库一样在本地进行 commit 操作。当全部工作完成后,先切换至主分支,将远程代码更新至本地,再将工作分支合并至主分支,最后向远程服务器提交代码,每个 commit 记录都将作为 SVN 中的一个版本,commit message 作为 SVN 版本的提交信息。

建立工作分支

$ git branch <branch name>

切换至工作分支

$ git checkout <branch name>

本地代码修改后提交

$ git commit -a -m "commit meaage"

切换至主分支后从获取最新的远程代码

$ git svn rebase

主分支同步后,与工作分支合并

// 操作在主分支时进行,也可以用 rebase 合并
$ git merge <branch name>

将本地 commit 提交到远程

$ git svn dcommit

注:dcommit 的操作会先拉 SVN 仓库的代码 rebase 当没有冲突后,将本地的修改提交到 SVN 远程仓库。

每个 commit 记录都将作为 SVN 中的一个版本,commit message 作为 SVN 版本的提交信息。

冲突处理

  1. 找到冲突文件,修改冲突部分后保存
  2. 修改完毕后,执行 git add .
  3. git rebase --continue

使用 SourceTree

SourceTree 支持 git svn 操作。

加载评论框需要翻墙