FossilRepo

Sync Bridge

3 days, 13 hours ago by admin

Sync Bridge

The sync bridge mirrors Fossil repositories to GitHub and GitLab as downstream read-only copies.

How It Works

flowchart LR
    Fossil["Fossil Repo<br/>(source of truth)"] --> Bridge["Sync Bridge<br/>(Celery task)"]
    Bridge --> Git["Git Export"]
    Git --> GitHub["GitHub Mirror"]
    Git --> GitLab["GitLab Mirror"]

The bridge:

  • Exports Fossil commits as Git commits

  • Pushes to configured Git remotes

  • Optionally syncs tickets to GitHub/GitLab Issues

  • Optionally syncs wiki pages to repo docs

What Gets Synced

| Fossil Artifact | Git Target | Configurable |

|---|

| Commits | Git commits | Always |

| Tags | Git tags | Always |

| Branches | Git branches | Always |

| Tickets | GitHub/GitLab Issues | Optional |

| Wiki | Repository docs | Optional |

Configuration

Set up mirroring through the Django management UI or environment variables:

# GitHub mirror
GITHUB_TOKEN=ghp_xxxxxxxxxxxx
# GitLab mirror
GITLAB_TOKEN=glpat-xxxxxxxxxxxx

Per-repository mirror configuration is managed in the dashboard under Repository Settings > Sync.

Sync Modes

On-Demand

Trigger a sync manually from the dashboard or CLI:

docker compose exec django python manage.py fossil_sync my-project

Scheduled

Configure a Celery Beat schedule to sync at regular intervals:

# Runs every 15 minutes
CELERY_BEAT_SCHEDULE = {
'sync-all-repos': {
'task': 'fossil.tasks.sync_all',
'schedule': 900.0,
},
}

Upstream Pull

Pull updates from a remote Fossil server into your local instance:

docker compose exec django python manage.py fossil_pull my-project

Direction matters

The sync bridge is one-way: Fossil to Git. Changes pushed directly to a Git mirror will be overwritten on the next sync. Always push to the Fossil repo.

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button