使用 Subversion (SVN) 的方式来访问 Github

jopen 12年前

你的开发团队是否最近改用 Github 了吗?可能团队里部分人对使用 git 非常兴奋,但另外一些熟悉 Subversion 的人却很不爽?好消息是现在你可以通过 Git 和 Subversion (SVN) 的客户端来访问 Github 的资料库。

这篇文章大概介绍了如何利用 Subversion 客户端来更好的使用 GitHub 流程

Github 流程中每次功能提交和bug修复都会通过以下的步骤来完成:

  1. 从最新的 master 分支中创建一个 topic 分支
  2. 在你准备好要合并时在 topic 分支中提交
  3. 通过 Pull Request 将 topic 分支拉到 master 分支,讨论变更,更多提交等等,知道团队准备好合并
  4. 合并 Pull Request 然后发布

开始

首先要做的就是 svn checkout。Git 的 clone 让工作目录和资源库文件分离开来,工作目录在一个时间只有一个分支。而 svn checkout 是不同的,它在工作目录中混有资源库数据,因此你 checkout 的每个分支、标签都有相应的工作目录。资源库包含大量的分支和标签,如果把所有数据都 checkout 出来非常费带宽,你应该只检出某部分数据。

GitHub 通过 HTTP 协议来支持 git 和 svn 的客户端,你可以通过 HTTP clone URL 来浏览资源库中的文件。

使用 Subversion (SVN) 的方式来访问 Github

现在可以准备 checkout 了:

  1. 首先我们 checkout 一个资源库,并不下载任何文件:

    $ svn co --depth empty https://github.com/widgetmakers/gizmo  Checked out revision 1.  $ cd gizmo
  2. 然后获取 trunk 分支,svn 中的 trunk 分支相当于 git 里的 HEAD 分支(通常是 master)

    $ svn up trunk  A    trunk  A    trunk/README.md  A    trunk/gizmo.rb  Updated to revision 1.
  3. 获取 branches 目录的空 checkout:

    $ svn up --depth empty branches  Updated to revision 1.

进入 Git 流程

首先是创建一个 topic 分支,在你的 svn 客户端中,确保 master 是当前更新的 trunk,然后使用 svn copy 来创建分支:

$ svn up trunk  At revision 1.  $ svn copy trunk branches/more_awesome  A         branches/more_awesome  $ svn commit -m 'Added more_awesome topic branch'  Adding         branches/more_awesome    Committed revision 2.

然后你可以通过 web 界面或者 git 客户端看到一个新的分支:

使用 Subversion (SVN) 的方式来访问 Github

$ git fetch  From https://github.com/widgetville/gizmo   * [new branch]      more_awesome -> origin/more_awesome

编写一些代码

添加一些功能,修复一些 bug,然后提交,就像你平时使用 svn 一样:编辑文件,然后 svn commit 来提交变化。

$ svn status  M       gizmo.rb  $ svn commit -m 'Guard against known problems'  Sending        more_awesome/gizmo.rb  Transmitting file data .  Committed revision 3.    $ svn status  ?       test  $ svn add test  A         test  A         test/gizmo_test.rb  $ svn commit -m 'Test coverage for problems'  Adding         more_awesome/test  Adding         more_awesome/test/gizmo_test.rb  Transmitting file data .  Committed revision 4.

讨论、开发、发布

当你已经准备好要将所做的改动与团队其他人分享时,通过 web 界面来做一个 Pull Request:

  1. 进入 topic 分支,点击 Pull Request 按钮:
    使用 Subversion (SVN) 的方式来访问 Github

  2. 填写描述信息
    使用 Subversion (SVN) 的方式来访问 Github

  3. 和团队成员讨论变更的内容,这个讨论是以 Pull Request 里的评论方式进行的
    使用 Subversion (SVN) 的方式来访问 Github

  4. 合并 Pull Request. pull request 页面会展示这些变化是否已经合并。你只需要点击按钮即可完成,如果有冲突你需要先解决。使用 Subversion (SVN) 的方式来访问 Github使用 Subversion (SVN) 的方式来访问 Github使用 Subversion (SVN) 的方式来访问 Github

现在你的改动已经合并到了 master 分支,你可通过 svn update 来获取这些改动,然后开始下一阶段工作。

英文原文,OSCHINA原创翻译