Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-09-25. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

Subversion 客户端支持

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

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

Note

GitHub 3.13 版中将删除对 Subversion 的支持。 有关详细信息,请参阅 GitHub 博客

GitHub 上支持的 Subversion 功能

签出

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

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

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在文件列表上方,单击 “代码”。

    存储库登陆页面上的文件列表的屏幕截图。 “代码”按钮以深橙色轮廓突出显示。

  3. 复制存储库的 URL。

    • 要使用 HTTPS 克隆存储库,请在“HTTPS”下单击

    • 要使用 SSH 密钥克隆存储库,包括组织的 SSH 证书颁发机构颁发的证书,请单击“SSH”,然后单击

    • 要使用 GitHub CLI 克隆存储库,请单击“GitHub CLI”,然后单击

      “代码”下拉菜单的屏幕截图。 在存储库的 HTTPS URL 的右侧,复制图标以深橙色框出。

  4. 进行仓库的空检出:

    $ svn co --depth empty https://github.com/USER/REPO
    > Checked out revision 1.
    $ cd REPO
    
  5. 获取 trunk 分支。 Subversion 网桥将主干映射到 Git HEAD 分支。

    $ svn up trunk
    > A    trunk
    > A    trunk/README.md
    > A    trunk/gizmo.rb
    > Updated to revision 1.
    
  6. 获取 branches 目录的空签出。 这是所有非 HEAD 分支所在的位置,你将在此处创建功能分支。

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

创建分支

您还可以使用到 GitHub 的 Subversion 网桥创建分支。

从 svn 客户端更新 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 进行提交

添加一些功能并修复一些 bug 后,你想要将这些更改提交到 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 提交。