After locking the source repositories, you can export them one at a time. You will then create a single migration archive for the import process.

Note: Locking a repository prevents users from pushing to the repository or modifying a repository's resources, like issues, labels, milestones, wikis, and comments. New teams and collaborators can't be associated with a locked repository.

If you're performing a trial run, you don't need to lock repositories. Otherwise, it's highly recommended.

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

    ssh -p 122 admin@hostname
    
  2. To prepare a repository for export, use the ghe-migrator add command with the repository's URL:

    • If you're locking the repository, append the command with --lock:

      ghe-migrator add https://hostname/username/reponame --lock
      
    • If you're performing a trial run, --lock is not needed.

    • You can exclude file attachments by appending --exclude_attachments to the command. File attachments can be large and may needlessly bloat your final migration archive.
  3. When prompted, enter your GitHub Enterprise username:

    Enter username authorized for migration:  admin
    
  4. When prompted for a personal access token, enter the access token you created in "Preparing the GitHub Enterprise source instance":

    Enter personal access token:  **************
    
  5. When ghe-migrator add has finished it will print the unique "Migration GUID" that it generated to identify this export as well as a list of the resources that were added to the export. You will use the Migration GUID that it generated in subsequent ghe-migrator add and ghe-migrator export steps to tell ghe-migrator to continue operating on the same export.

    101 models added to export
    Migration GUID: example-migration-guid
    Number of records in this migration:
    users                        |  5
    organizations                |  1
    repositories                 |  1
    teams                        |  3
    milestones                   |  1
    issues                       |  3
    pull_requests                |  5
    pull_request_review_comments |  4
    commit_comments              |  2
    issue_comments               | 10
    issue_events                 | 63
    releases                     |  3
    attachments                  |  4
    

    Each time you add a new repository with an existing Migration GUID it will update the existing export. If you run ghe-migrator add again without a Migration GUID it will start a new export and generate a new Migration GUID. Do not re-use the Migration GUID generated during an export when you start preparing your migration for import.

  6. To add more repositories to the same export, use the ghe-migrator add command with the -g flag. You'll pass in the new repository URL and the Migration GUID from Step 5:

    ghe-migrator add https://hostname/username/other_reponame -g MIGRATION_GUID --lock
    
  7. When you've finished adding repositories, generate the migration archive using the ghe-migrator export command with the -g flag and the Migration GUID from Step 5:

    ghe-migrator export -g MIGRATION_GUID
    Archive saved to: /data/github/current/tmp/MIGRATION_GUID.tar.gz
    
    • To specify where migration files should be staged append the command with --staging-path=/full/staging/path. Defaults to /data/user/tmp.
  8. Close the connection to your GitHub Enterprise instance:

    exit
    logout
    Connection to hostname closed.
    
  9. Copy the migration archive to your computer using the scp command. The archive file will be named with the Migration GUID:

    scp -P 122 admin@hostname:/data/github/current/tmp/MIGRATION_GUID.tar.gz ~/Desktop
    
  10. To import the archived migration data to a GitHub Enterprise instance, see "Importing migration data to GitHub Enterprise".