Using the git-import suite of tools, you can import from Subversion, Mercurial and Team Foundation Version Control to Git repositories on GitHub Enterprise.

In this guide

Importing projects from Mercurial

  1. As a site admin, SSH into your GitHub Enterprise instance:

    ssh -p 122 admin@hostname
    
  2. Make a raw clone of the project using the command below, specifying the URL of the source project, and a path to a temporary repository:

    $ 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. Review the comma-separated (CSV) file in /PATH/REPO-NAME.git/git-import/raw-authors.csv. It should contain these columns:

    • ID: The author as stored in the original repository, followed by a unique identifier
    • NAME: The author as stored in the original repository

    To map authors from the original repository to an email address and name, create a new CSV file with the columns ID,(ignored),GIT_EMAIL,GIT_NAME, which replaces the author information for anything by "ID" with "GIT_EMAIL" and "GIT_NAME".

    Example:

    • Original author ID: octocat@111111-2222-3333-4444-55555555555
    • New email address: octocat@github.com
    • New name: The Octocat

    To map the original author to the new Git user, the CSV file should include the line:

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

  4. Rewrite the authors and branches using the CSV file:

    $ `git-import-rewrite --flavor hg --authors /PATH/AUTHORS-MAP-FILE.csv /PATH/REPO-NAME.git`
    
  5. If you haven't yet, create a new empty repository on GitHub Enterprise.

  6. Change the current working directory to your local repository.

  7. Push the imported repository to GitHub Enterprise:

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

Importing projects from Subversion

  1. As a site admin, SSH into your GitHub Enterprise instance:

    ssh -p 122 admin@hostname
    
  2. Make a raw clone of the project using the command below, specifying the URL of the source project, and a path to a temporary repository:

    $ 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. Review the comma-separated (CSV) file in /PATH/REPO-NAME.git/git-import/raw-authors.csv. It should contain these columns:

    • ID: The author as stored in the original repository, followed by a unique identifier
    • NAME: The author as stored in the original repository

    To map authors from the original repository to an email address and name, create a new CSV file with the columns ID,(ignored),GIT_EMAIL,GIT_NAME, which replaces the author information for anything by "ID" with "GIT_EMAIL" and "GIT_NAME".

    Example:

    • Original author ID: octocat@111111-2222-3333-4444-55555555555
    • New email address: octocat@github.com
    • New name: The Octocat

    To map the original author to the new Git user, the CSV file should include the line:

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

  4. Rewrite the authors and branches using the CSV file:

    $ git-import-rewrite --flavor svn --authors /PATH/AUTHORS-MAP-FILE.csv /PATH/REPO-NAME.git`
    
  5. If you haven't yet, create a new empty repository on GitHub Enterprise.

  6. Change the current working directory to your local repository.

  7. Push the imported repository to GitHub Enterprise:

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

Importing projects from Team Foundation Version Control

  1. As a site admin, SSH into your GitHub Enterprise instance:

    ssh -p 122 admin@hostname
    
  2. Make a raw clone of the project using the command below, specifying the URL of the source project, and a path to a temporary repository:

    $ 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. Review the comma-separated (CSV) file in /PATH/REPO-NAME.git/git-import/raw-authors.csv. It should contain these columns:

    • ID: The author as stored in the original repository, followed by a unique identifier
    • NAME: The author as stored in the original repository

    To map authors from the original repository to an email address and name, create a new CSV file with the columns ID,(ignored),GIT_EMAIL,GIT_NAME, which replaces the author information for anything by "ID" with "GIT_EMAIL" and "GIT_NAME".

    Example:

    • Original author ID: octocat@111111-2222-3333-4444-55555555555
    • New email address: octocat@github.com
    • New name: The Octocat

    To map the original author to the new Git user, the CSV file should include the line:

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

  4. Rewrite the authors and branches using the CSV file:

    $ git-import-rewrite --flavor tfs --authors /PATH/AUTHORS-MAP-FILE.csv /PATH/REPO-NAME.git`
    
  5. If you haven't yet, create a new empty repository on GitHub Enterprise.

  6. Change the current working directory to your local repository.

  7. Push the imported repository to GitHub Enterprise:

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

Further reading