Skip to main content

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

借助管理 shell 从其他版本控制系统导入

使用管理 shell,可以从 Subversion、Mercurial 和 Team Foundation 版本控制导入到 GitHub Enterprise Server 上的 Git 仓库。

谁可以使用此功能?

Site administrators can use the administrative shell to import data from other version control systems.

从 Mercurial 导入项目

  1. 通过 SSH 连接到 你的 GitHub Enterprise Server 实例。 如果实例包含多个节点,例如,如果配置了高可用性或异地复制,则通过 SSH 连接到主节点。 如果使用群集,则可以通过 SSH 连接到任何节点。 将 HOSTNAME 替换为实例的主机名,或节点的主机名或 IP 地址。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 使用以下命令对项目进行原始克隆,并指定源项目的 URL 和临时仓库的路径:

    $ git-import-hg-raw HG-CLONE-URL/PATH/REPO-NAME.git
    # Creates a new repository with one or more Git refs in "refs/import/" in the specified path.
    
  3. 查看 /PATH/REPO-NAME.git/git-import/raw-authors.csv 中的逗号分隔 (CSV) 文件。 它应包含以下三列:

    • ID:存储在原始存储库中的作者,后接唯一识别符。
    • NAME:原始存储库中存储的作者

    要将原始存储库中的作者映射到电子邮件地址和名称,请新建包含列 ID,(ignored),GIT_EMAIL,GIT_NAME 的 CSV 文件。 可以使用此 CSV 文件将“ID”中任何内容的作者信息替换为“GIT_EMAIL”和“GIT_NAME”。

    例如,如果要将 ID 为 octocat@111111-2222-3333-4444-55555555555 的原始作者映射到电子邮件地址为 octocat@github.com、名称为 The Octocat 的新用户,则 CSV 文件应包含以下行:

    octocat@111111-2222-3333-4444-55555555555, ,octocat@github.com,The Octocat

  4. 使用 CSV 文件重写作者和分支:

    git-import-rewrite --flavor hg --authors /PATH/AUTHORS-MAP-FILE.csv /PATH/REPO-NAME.git
    
  5. 如果你还没有,请在 GitHub Enterprise Server 上创建一个新的空存储库

  6. 将当前工作目录更改为您的本地仓库。

  7. 将导入的仓库推送到 GitHub Enterprise Server:

    git push --mirror PUSH-URL-ON-GITHUB-ENTERPRISE
    

从 Subversion 导入项目

  1. 通过 SSH 连接到 你的 GitHub Enterprise Server 实例。 如果实例包含多个节点,例如,如果配置了高可用性或异地复制,则通过 SSH 连接到主节点。 如果使用群集,则可以通过 SSH 连接到任何节点。 将 HOSTNAME 替换为实例的主机名,或节点的主机名或 IP 地址。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 使用以下命令对项目进行原始克隆,并指定源项目的 URL 和临时仓库的路径:

    $ git-import-svn-raw SVN-CLONE-URL /PATH/REPO-NAME.git
    # Creates a new repository with one or more Git refs in "refs/import/" in the specified path.
    
  3. 查看 /PATH/REPO-NAME.git/git-import/raw-authors.csv 中的逗号分隔 (CSV) 文件。 它应包含以下三列:

    • ID:存储在原始存储库中的作者,后接唯一识别符。
    • NAME:原始存储库中存储的作者

    要将原始存储库中的作者映射到电子邮件地址和名称,请新建包含列 ID,(ignored),GIT_EMAIL,GIT_NAME 的 CSV 文件。 可以使用此 CSV 文件将“ID”中任何内容的作者信息替换为“GIT_EMAIL”和“GIT_NAME”。

    例如,如果要将 ID 为 octocat@111111-2222-3333-4444-55555555555 的原始作者映射到电子邮件地址为 octocat@github.com、名称为 The Octocat 的新用户,则 CSV 文件应包含以下行:

    octocat@111111-2222-3333-4444-55555555555, ,octocat@github.com,The Octocat

  4. 使用 CSV 文件重写作者和分支:

    git-import-rewrite --flavor svn --authors /PATH/AUTHORS-MAP-FILE.csv /PATH/REPO-NAME.git
    
  5. 如果你还没有,请在 GitHub Enterprise Server 上创建一个新的空存储库

  6. 将当前工作目录更改为您的本地仓库。

  7. 将导入的仓库推送到 GitHub Enterprise Server:

    git push --mirror PUSH-URL-ON-GITHUB-ENTERPRISE
    

从 Team Foundation Version Control 导入项目

  1. 通过 SSH 连接到 你的 GitHub Enterprise Server 实例。 如果实例包含多个节点,例如,如果配置了高可用性或异地复制,则通过 SSH 连接到主节点。 如果使用群集,则可以通过 SSH 连接到任何节点。 将 HOSTNAME 替换为实例的主机名,或节点的主机名或 IP 地址。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 使用以下命令对项目进行原始克隆,并指定源项目的 URL 和临时仓库的路径:

    $ git-import-tfs-raw TEAM-FOUNDATION-CLONE-URL /PATH/REPO-NAME.git
    # Creates a new repository with one or more Git refs in "refs/import/" in the specified path.
    
  3. 查看 /PATH/REPO-NAME.git/git-import/raw-authors.csv 中的逗号分隔 (CSV) 文件。 它应包含以下三列:

    • ID:存储在原始存储库中的作者,后接唯一识别符。
    • NAME:原始存储库中存储的作者

    要将原始存储库中的作者映射到电子邮件地址和名称,请新建包含列 ID,(ignored),GIT_EMAIL,GIT_NAME 的 CSV 文件。 可以使用此 CSV 文件将“ID”中任何内容的作者信息替换为“GIT_EMAIL”和“GIT_NAME”。

    例如,如果要将 ID 为 octocat@111111-2222-3333-4444-55555555555 的原始作者映射到电子邮件地址为 octocat@github.com、名称为 The Octocat 的新用户,则 CSV 文件应包含以下行:

    octocat@111111-2222-3333-4444-55555555555, ,octocat@github.com,The Octocat

  4. 使用 CSV 文件重写作者和分支:

    git-import-rewrite --flavor tfs --authors /PATH/AUTHORS-MAP-FILE.csv /PATH/REPO_NAME.git
    
  5. 如果你还没有,请在 GitHub Enterprise Server 上创建一个新的空存储库

  6. 将当前工作目录更改为您的本地仓库。

  7. 将导入的仓库推送到 GitHub Enterprise Server:

    git push --mirror PUSH-URL-ON-GITHUB-ENTERPRISE
    

延伸阅读