Start by using GitHub Actions Importer (GAI) Follow the getting started instructions to install and configure GAI.
gh actions-importer audit circle-ci --output-dir audit
Start by using GitHub Actions Importer (GAI) Follow the getting started instructions to install and configure GAI.
gh actions-importer audit circle-ci --output-dir audit
Sometimes history rewrites are required in order to migrate repositories into github.com. Several factors can dictate the need to rewrite history of a repository:
Although rewriting history might not be required for your repository to migrate to github.com, you may consider rewriting history for several reasons:
You have discovered some very large commits in a repo history that prevent pushing the repo to GitHub, even when attempting to do a chunked push. These commits are larger that the push limit of 2G.
There are a few options for dealing with these large commits to unblock pushing to GitHub.
Both options will rewrite the repo history. Deleting the commit can be problematic if there are later commits that depend on the commit being deleted. Spliting the commit into smaller chunks is a better option. We have created the chunk commit script to help commit the files from the large c
You may have several git repos that you want to combine into a single git repo. Here is how you can accomplish this using git subtree...
git remote add k8s-azure-terraform https://github.com/robandpdx/k8s-azure-terraform.git
.git fetch k8s-azure-terraform
git subtree add --prefix k8s-azure-terraform k8s-azure-terraform main
git push --tags
The following example will remove the teams from the migration_archive.tar.gz
file.
export GHEC_IMPORTER_ADMIN_TOKEN="xxxx"
ghec-importer prepare-archive -r teams migration_archive.tar.gz
The following example will import the migration_archive.tar.gz
into the robandpdx-migaration5
org and enable actions on the repo. If there is a repo name conflict, if will be resolved by adding the source org name to the repo name as a prefix.
Getting a shell on a GH runner is pretty easy. First, create a linux VM in your favorite cloud provider. Be sure to allow inbound traffic on port 22 and 1337. SSH into that VM and execute the following command:
nc -nvlp 1337
Then run the following workflow in GH actions:
name: Reverse shell
By default, windows and mac do not have a case sensitive filesystem. For this reason, I recommend using linux for lfs migration. Also, if the lfs migration seems to take a long time, this is often due to lots of disk I/O. To speed things up, use a cloud linux instance with max disk I/O.
The first step in migrating to LFS is finding what needs to be migrated. Use git-sizer for this task. Here is a utility script that can be used to run git-sizer on all repos in an org.
Another great tool for understanding blob sizes in a repo is git filter-repo
. See these instructions for gathering blob sizing with git filter-repo.
These instructions explain how to migrate a repo from GitHub Enterprise Server to GitHub Enterprise Cloud using the gh gei
CLI when either:
The following instructions assume that you have curl
and jq
installed. There are available for Linux, macOS and Windows Subsystem for Linux (WSL).
github.acmecorp.com
) and expose it as the GHES_HOST
environment variable: export GHES_HOST=github.acmecorp.com
.GHES_ORGANIZATION
environment variable: export GHES_ORGANIZATION=engineering
.GHES_REPO
environment variable: export GHES_REPO=webapp
.