The GitHub Enterprise Importer (GEI, formerly Octoshift) is a highly customizable API-first migration offering designed to help you move your enterprise to GitHub Enterprise Cloud. The GEI-CLI wraps the GEI APIs as a cross-platform console application to simplify customizing your migration experience.
GEI is generally available for repository migrations originating from Azure DevOps or GitHub that target GitHub Enterprise Cloud. It is in public beta for repository migrations from BitBucket Server and Data Center to GitHub Enterprise Cloud.
There are 3 separate CLIs that we ship as extensions for the official GitHub CLI:
gh gei
- Run migrations between GitHub productsgh ado2gh
- Run migrations from Azure DevOps to GitHubgh bbs2gh
- Run migrations from BitBucket Server or Data Center to GitHubTo use gh gei
first install the latest GitHub CLI, then run the command
gh extension install github/gh-gei
To use gh ado2gh
first install the latest GitHub CLI, then run the command
gh extension install github/gh-ado2gh
To use gh bbs2gh
first install the latest GitHub CLI, then run the command
gh extension install github/gh-bbs2gh
We update the extensions frequently, so make sure you update them on a regular basis:
gh extension upgrade github/gh-gei
To see the available commands and options run:
gh gei --help
gh ado2gh --help
gh bbs2gh --help
Create Personal Access Tokens with access to the source GitHub org, and the target GitHub org (for more details on scopes needed refer to our official documentation).
Set the GH_SOURCE_PAT and GH_PAT environment variables.
Run the generate-script
command to generate a migration PowerShell script.
gh gei generate-script --github-source-org ORGNAME --github-target-org ORGNAME
The previous command will have created a migrate.ps1
script. Review the steps in the generated script and tweak if necessary.
The migrate.ps1 script requires PowerShell to run. If not already installed see the install instructions to install PowerShell on Windows, Linux, or Mac. Then run the script.
Refer to the official documentation for more details, including differences when migrating from GitHub Enterprise Server.
Create Personal Access Tokens with access to the Azure DevOps org, and the GitHub org (for more details on scopes needed refer to our official documentation).
Set the ADO_PAT
and GH_PAT
environment variables.
Run the generate-script
command to generate a migration script.
gh ado2gh generate-script --ado-org ORGNAME --github-org ORGNAME --all
The previous command will have created a migrate.ps1
PowerShell script. Review the steps in the generated script and tweak if necessary.
The migrate.ps1
script requires PowerShell to run. If not already installed see the install instructions to install PowerShell on Windows, Linux, or Mac. Then run the script.
Refer to the official documentation for more details.
Create Personal Access Token for the target GitHub org (for more details on scopes needed refer to our official documentation).
Set the GH_PAT
, BBS_USERNAME
, and BBS_PASSWORD
environment variables.
If your Bitbucket Server or Data Center instance runs on Windows, set the SMB_PASSWORD
environment variable.
Run the generate-script
command to generate a migration script.
> gh bbs2gh generate-script --bbs-server-url BBS-SERVER-URL \
--github-org DESTINATION \
--output FILENAME \
# Use the following options if your Bitbucket Server instance runs on Linux
--ssh-user SSH-USER --ssh-private-key PATH-TO-KEY
# Use the following options if your Bitbucket Server instance runs on Windows
--smb-user SMB-USER
# Use the following option if you are running a Bitbucket Data Center cluster or your Bitbucket Server is behind a load balancer
--archive-download-host ARCHIVE-DOWNLOAD-HOST
The previous command will have created a migrate.ps1
PowerShell script. Review the steps in the generated script and tweak if necessary.
The migrate.ps1
script requires PowerShell to run. If not already installed see the install instructions to install PowerShell on Windows, Linux, or Mac. Then run the script.
Refer to the official documentation for more details.
When the CLI is launched, it logs if a newer version of the CLI is available. You can skip this check by setting the GEI_SKIP_VERSION_CHECK
environment variable to true
.
When the CLI is launched, it logs a warning if there are any ongoing GitHub incidents that might affect your use of the CLI. You can skip this check by setting the GEI_SKIP_STATUS_CHECK
environment variable to true
.
See Contributing for more info on how to get involved.