Skip to content
GitRiverGitRiver
RU
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

  1. Click “+” in the top bar -> “Import”
  2. Select the source (GitHub, GitLab, Bitbucket, Gitea)
  3. Enter an access token - a personal token with repository read permissions on the source platform
  4. For self-hosted instances, specify the instance URL (e.g., https://gitlab.company.com)
  5. Click “Load repositories” - a list of available repositories will appear
  6. Select a repository or enter a URL manually
  7. Specify the name in GitRiver (defaults to the original)
  8. Choose what to import:
    • Issues
    • Labels
    • Milestones
    • Pull requests / merge requests
    • Releases
    • Wiki
  9. Optionally: “Create mirror” - set up automatic synchronization after import
  10. 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

  1. Open the repository -> “Settings” -> “Mirror” section
  2. Click “Create mirror”
  3. Select the direction: Pull (receive)
  4. Specify:
    • Remote repository URL - https://github.com/owner/repo.git
    • Token - for accessing private repositories (optional)
    • Sync interval - from 5 minutes to 7 days
  5. 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

  1. Open the repository -> “Settings” -> “Mirror” section
  2. Click “Create mirror”
  3. Select the direction: Push (send)
  4. 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
  5. 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.