This tool imports commits from a private GitLab repository to a separate repository. It can be used to showcase your programming activity for another company on GitHub.
Check out this informative blog post for a practical use case on how to import GitLab commits here.
Contributions before running import-gitlab-commits
:

After:

-
Download and install Go.
-
Install the program by running the following command in a shell:
go install github.com/alexandear/import-gitlab-commits@latest
-
Set environment variables and run
import-gitlab-commits
:export GITLAB_BASE_URL=<your_gitlab_server_url> export GITLAB_TOKEN=<your_gitlab_token> export COMMITTER_NAME="<Name Surname>" export COMMITTER_EMAIL=<[email protected]> $(go env GOPATH)/bin/import-gitlab-commits
Where:
GITLAB_BASE_URL
is a GitLab instance URL, e.g.,https://gitlab.com
,https://gitlab.gnome.org
, or any GitLab server.GITLAB_TOKEN
is a personal access token.COMMITTER_NAME
is your GitHub name with surname, e.g.,John Doe
(can be passed togit config user.name
).COMMITTER_EMAIL
is your GitHub email, e.g.,[email protected]
(valid forgit config user.email
).$(go env GOPATH)/bin/
is the path whereimport-gitlab-commits
is installed.
What the tool does:
- Retrieves current user info using
GITLAB_TOKEN
. - Fetches projects from
GITLAB_BASE_URL
that the current user contributed to. - For all projects, fetches commits where the author's email matches the current user's email.
- Creates a new repository
repo.gitlab.yourcompany.com.currentusername
and commits all fetched commits with the message:Project: GITLAB_PROJECT_ID commit: GITLAB_COMMIT_HASH
, commit dateGITLAB_COMMIT_DATE
, and commit authorCOMMITTER_NAME <COMMITTER_EMAIL>
.
To display the changes on GitHub, you need to:
- Create a new repository
yourcompany-contributions
on GitHub. - Open the folder
repo.gitlab.yourcompany.com.currentusername
. - Add the remote URL:
git remote add origin [email protected]:username/yourcompany-contributions.git
. - Push the changes.
To run integration tests:
-
Set the
GITLAB_TOKEN
environment variable with the value obtained at https://gitlab.com/-/user_settings/personal_access_tokens. Necessary scopes:read_api
read_user
read_repository
-
Set
GITLAB_BASE_URL
tohttps://gitlab.com
. -
Run
make test-integration
.