Navigation
Import and Mirroring
How to import repositories from other platforms and set up automatic mirroring
GitRiver allows you to import existing repositories from other platforms and set up automatic mirroring for synchronization.
Repository Import
Supported Sources
| Source | What is imported |
|---|---|
| GitHub | Code, issues, pull requests, labels, milestones, releases, Wiki |
| GitLab | Code, issues, merge requests, labels, milestones, releases, Wiki |
| Bitbucket | Code, issues, pull requests |
| Gitea | Code, issues, pull requests, labels, milestones, releases, Wiki |
| Arbitrary URL | Code only (git clone) |
Step by Step
- Click “+” in the top bar -> “Import”
- Select the source (GitHub, GitLab, Bitbucket, Gitea)
- Enter an access token - a personal token with repository read permissions on the source platform
- For self-hosted instances, specify the instance URL (e.g.,
https://gitlab.company.com) - Click “Load repositories” - a list of available repositories will appear
- Select a repository or enter a URL manually
- Specify the name in GitRiver (defaults to the original)
- Choose what to import:
- Issues
- Labels
- Milestones
- Pull requests / merge requests
- Releases
- Wiki
- Optionally: “Create mirror” - set up automatic synchronization after import
- Click “Start import”
What is carried over with pull requests
Pull requests are carried over together with their review history: the original number, the state (open, closed, merged), both branches, labels, assignees, closing and merge dates, general and inline comments (including replies in a discussion thread) and review verdicts. GitLab has no verdicts as such - approvals are carried over instead.
Import report
The import runs in the background. Its progress and outcome are visible in repository settings, the “Import report” section: per-stage counters and a list of losses. Losses are named explicitly rather than discovered later:
- an author from the source was not found among GitRiver users - whoever started the import becomes the author (matching is by username);
- an assignee or reviewer was not found - not carried over;
- the request came from a fork: the source repository is not created in GitRiver, so comparing changes for such a request is unavailable;
- an inline comment the source can no longer anchor to a line is carried over as a file path without a line number;
- a dismissed review is reduced to “commented”.
Running the import into the same repository again creates no duplicates: a pull request whose number is already taken is skipped and listed in the report.
Pull Mirroring
A pull mirror periodically fetches changes from an external repository into GitRiver. Useful when the main repository is hosted on another platform, and GitRiver is used as a backup or for CI.
Setup
- Open the repository -> “Settings” -> “Mirror” section
- Click “Create mirror”
- Select the direction: Pull (receive)
- Specify:
- Remote repository URL -
https://github.com/owner/repo.git - Token - for accessing private repositories (optional)
- Sync interval - from 5 minutes to 7 days
- Remote repository URL -
- Click “Create”
How It Works
GitRiver automatically performs git fetch from the remote repository at the specified interval. All new commits, branches, and tags appear in GitRiver.
Manual Sync
Click “Sync” on the mirror page for immediate synchronization without waiting for the interval. A zero interval means “manual only”. If a sync of this mirror is already running, the request answers 409: there are no two git fetch runs into one repository.
Status
The mirror page shows: last sync time, status (active/disabled), errors if any.
Push Mirroring
A push mirror automatically sends changes from GitRiver to an external repository. Useful for backup or publishing code on another platform.
Setup
- Open the repository -> “Settings” -> “Mirror” section
- Click “Create mirror”
- Select the direction: Push (send)
- Specify:
- Remote repository URL - with authorization in the URL (e.g.,
https://token@github.com/owner/repo.git) - Sync interval - from 5 minutes to 7 days
- Remote repository URL - with authorization in the URL (e.g.,
- Click “Create”
How It Works
On each sync, GitRiver performs git push to the external repository. All commits, branches, and tags are sent automatically.
Deleting a Mirror
On the “Settings” -> “Mirror” page -> “Delete mirror” button. Synchronization stops. Repository data is not deleted.