Skip to main content

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

Subversion 客户端支持

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

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

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

GitHub 上支持的 Subversion 功能

签出

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

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

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到存储库的主页。

  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 提交。