GitLab’s import feature has worked quite nicely.
- On https://gitlab.com (make sure you are logged in), you will get a list of your projects. Click New Project.
- Open the Import Project tab, and click Github.
- If you have not granted Gitlab authorization to access your Github account, you will be prompted to do so now.
- A list of your Github repos will appear. For each repo you wish to import, choose the namespace (your personal one or that of any of your organizations, if any) and change the project name if you wish. (Default is to import to your personal namespace and use the same repo name as on Github.) Then click Import next to the repo you wish to import.
Import will take a couple of minutes. When it finishes, you will get your entire repo, including wiki, issues and merge requests. Issues and merge requests will retain ticket numbers as on Github, and labels also seem to get migrated.
Github Pages do not seem to get migrated automatically. This requires some manual steps. For purely static content (no SSG), with content stored in the gh-pages
branch, the process is as follows:
- Switch to your
gh-pages
branch.
- Create a new folder
public
and move all content there.
- Commit your changes.
- Switch back to
master
and merge gh-pages
(so that your content now resides on a separate folder in master
rather than its own branch).
- On your project’s main page, click Add CI/CD. This will create a new
.gitlab-ci.yml
file; add the following content and commit:
image: alpine:latest
pages:
stage: deploy
script:
- echo 'Nothing to do...'
artifacts:
paths:
- public
only:
- master
This will take another few minutes. Navigate to Settings > Pages and click the link to your pages.
Github has multiple options for storing web content; the above may also work for others with slight modifications.