Reputation: 5881
Is there a way to move an entire repository from Github to GitLab?
For the code itself, this would be a simple matter of creating a new repo on GitLab and pushing to it.
Wiki pages live in a separate branch on Github and are managed with Git mechanisms; AFAIK the same goes for GitLab. Same story for pages.
That leaves issues and merge requests as the main open points. Is there a way to copy those from Github to GitLab, at least in the state they were in at the time of the migration?
Github offers an export ferature, and GitLab has an import feature which can import a Github repository—do any of these help with the above?
Upvotes: 10
Views: 14709
Reputation: 1324258
That leaves issues and merge requests as the main open points. Is there a way to copy those from Github to GitLab, at least in the state they were in at the time of the migration?
GitLab 15.5 (October 2022) might help:
Import and store attachments when importing from GitHub
You can now import GitHub project image resources and other attachment types from release notes and comments. The attachments are added to GitLab and their links are updated to new GitLab URLs.
Attachments aren’t imported by default because it can be a time intensive operation. To import them, go to the GitHub import page, and select Import Markdown attachments under Advanced import settings when importing using the GitLab UI.
See Documentation and Issue.
And:
Import more relationships when importing projects from GitHub
Importing all supported relationships during a project import from GitHub can take a long time and is disabled by default. Specifically:
- Image resources and other attachments types.
- Issue events.
- Pull request events.
- All pull request and issue comments (delivered in GitLab 14.2.)
Now you can include these additional relationships in an import if you require them, which slows down the import but includes more information.
To import additional relationships, go to the GitHub import page and select appropriate checkboxes under Advanced import settings.See Documentation and Issue.
With:
Import pull request and issue events from GitHub
We continue to improve the GitHub project importer by adding more metadata to the migrated projects.
With added pull request events history, the following pull request events can be imported from GitHub and become part of a merge request’s metadata:
- Closed or reopened.
- Labeled or unlabeled.
- Review requested or review request removed.
- Assigned or unassigned.
- Edited.
With added issue events history, the following issue events can be imported from GitHub and become part of an issue’s metadata:
- Closed or reopened.
- Labeled or unlabeled.
- Milestone added or removed.
- Cross-referenced.
- Assigned or unassigned.
- Renamed.
Because importing pull request and issue events can take a long time, they aren’t imported by default.
To import them, go to the GitHub import page, and select Import issue and pull request events under Advanced import settings when importing using the GitLab UI.See Epic 7673, Epic 7655 and
Documentation.
Upvotes: 0
Reputation: 5881
GitLab’s import feature has worked quite nicely.
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:
gh-pages
branch.public
and move all content there.master
and merge gh-pages
(so that your content now resides on a separate folder in master
rather than its own branch)..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.
Upvotes: 13
Reputation: 3811
According to the official docs, the following aspects of a project are imported when importing from GitHub to GitLab:
Upvotes: 4