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
    

    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 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".