我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

Subversion 客户端支持

GitHub 仓库可从 Git 和 Subversion (SVN) 客户端进行访问。 本文介绍如何在 GitHub 上使用 Subversion 客户端以及您可能遇到的一些常见问题。

本文内容

GitHub 通过 HTTPS 协议支持 Subversion 客户端。 我们使用 Subversion 网桥将 svn 命令传递给 GitHub。

GitHub 上支持的 Subversion 功能

检出

您首先要进行 Subversion 检出。 由于 Git 克隆将工作目录(您编辑文件的位置)与仓库数据分开,因此工作目录中一次只有一个分支。

Subversion 检出则不同:它们混合工作目录中的仓库数据,因此存在用于您已检出的每个分支和标记的工作目录。 对于具有许多分支和标记的仓库,检出所有内容可能会造成带宽负担,因此应从部分检出开始。

  1. On GitHub, navigate to the main page of the repository.

  2. Under the repository name, click Clone or download.

    克隆或下载按钮

  3. To clone the repository using HTTPS, under "Clone with HTTPS", click . To clone the repository using an SSH key, including a certificate issued by your organization's SSH certificate authority, click Use SSH, then click .

    Clone URL button

  4. 进行仓库的空检出:

    $ svn co --depth empty https://github.com/user/repo
    > Checked out revision 1.
    $ cd repo
  5. Get the trunk branch. The Subversion bridge maps trunk to the Git HEAD branch (which is usually master).

    $ svn up trunk
    > A    trunk
    > A    trunk/README.md
    > A    trunk/gizmo.rb
    > Updated to revision 1.
  6. Get an empty checkout of the branches directory. This is where all of the non-HEAD branches live, and where you'll be making feature branches.

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

Creating branches

You can also create branches using the Subversion bridge to GitHub.

From your svn client, make sure "master" is current by updating trunk:

$ svn up trunk
> At revision 1.

接下来,您可以使用 svn copy 创建新分支:

$ 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.

您可以在仓库的分支下拉菜单中确认存在新分支:

分支快照

您还可以通过命令行确认新分支:

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

对 Subversion 进行提交

添加一些功能并修复一些漏洞后,您想要将这些更改提交到 GitHub。 此工作正如您惯用的 Subversion 一样。 编辑文件,然后使用 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.

在分支间切换

要在分支之间切换,您可能想要从 trunk 的检出开始:

$ svn co --depth empty https://github.com/user/repo/trunk

然后,您可以切换到另一个分支:

$ svn switch https://github.com/user/repo/branches/more_awesome

为 Subversion 提交查找 Git 提交 SHA

GitHub 的 Subversion 服务器公开每个 Subversion 提交的 Git 提交 sha。

要查看提交 SHA,应请求 git-commit 未版本化的远程属性。

$ svn propget git-commit --revprop -r HEAD https://github.com/user/repo
05fcc584ed53d7b0c92e116cb7e64d198b13c4e3

使用此提交 SHA,举例来说,您可以在 GitHub 上查找相应的 Git 提交。

延伸阅读

问问别人

找不到要找的内容?

联系我们