Skip to content

ADR-027: Bidirectional Sync Strategy

Status

โœ… Accepted - Implemented 2026-05-25

Context

CLARISSA wird primรคr auf GitLab entwickelt (CI/CD, Runner-Infrastruktur, Issues), soll aber auch auf GitHub sichtbar sein fรผr: - Open Source Visibility - Community Contributions - Academic Citations

Decision

GitLab als Primary, GitHub als Mirror mit bidirektionalem Sync:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   GitLab    โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚   GitHub    โ”‚
โ”‚  (Primary)  โ”‚ auto    โ”‚  (Mirror)   โ”‚
โ”‚             โ”‚ push    โ”‚             โ”‚
โ”‚  CI/CD      โ”‚         โ”‚  Visibility โ”‚
โ”‚  Runners    โ”‚ โ—„โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚  PRs        โ”‚
โ”‚  Issues     โ”‚ manual  โ”‚  Community  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ pull    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Sync-Jobs

Job Trigger Richtung
github-push auto (main) GitLab โ†’ GitHub
github-pull manual GitHub โ†’ GitLab
github-status manual Status Check

Konflikt-Strategie

  • GitLab wins: Bei Konflikten ist GitLab die Source of Truth
  • --force-with-lease: Sicheres Force-Push mit Schutz vor Race Conditions
  • Externe PRs auf GitHub werden manuell nach GitLab gezogen

Alternatives Considered

  1. GitLab Push Mirror (Settings)
  2. Pro: Einfach, automatisch
  3. Con: Nur unidirektional, keine Kontrolle

  4. GitHub Actions โ†’ GitLab

  5. Pro: Bidirektional
  6. Con: Doppelte CI-Infrastruktur

  7. Externes Tool (git-sync, repo-sync)

  8. Pro: Feature-reich
  9. Con: Zusรคtzliche Dependency

Consequences

Positive

  • Volle Kontrolle รผber Sync-Zeitpunkt und -Richtung
  • Nutzt bestehende Runner-Infrastruktur
  • Auditierbar in CI/CD Logs
  • Flexibel erweiterbar

Negative

  • Manueller Schritt fรผr GitHubโ†’GitLab
  • GITHUB_TOKEN muss gepflegt werden

Implementation

  • Pipeline: .gitlab/github-sync.yml
  • Issue: #157
  • Variable: GITHUB_TOKEN (Gruppen-Ebene, masked)

Last updated: 2026-05-25