Files
svn-git-server/config.yml.example
T
uberwald 45fb8c40d0 feat: initial import — SVN↔Git bi-directional mirror for Gitea
Server-side sidecar daemon. Uses own SQLite mapping table (not git svn)
so Git commit hashes never change. Pure Python, zero framework deps.

Includes:
- SVN→Git sync engine with nested-directory tree reconstruction
- Git→SVN push with author mapping and working-copy management
- Branch/tag sync (svn copy → git branch/tag and reverse)
- Gitea integration (on-disk push/fetch, webhook receiver)
- Reconciliation tool for divergence recovery (assess + auto-fix)
- Full end-to-end regression test (bash, 34 checks)
- systemd unit and deployment docs

Only external dependency: PyYAML (config parsing).
2026-06-23 09:47:02 +02:00

45 lines
1.5 KiB
Plaintext

# gitea-svn-mirror configuration
# Full reference: see README.md
data_dir: /var/svn-mirror
mirrors:
- id: my-project
enabled: true
# ── SVN remote ──────────────────────────────────────────
svn:
url: https://svn.example.com/svn/myproject
layout: std # "std" or "custom"
# For non-standard layout:
# layout: custom
# trunk: trunk
# branches: branches
# tags: tags
# ── Gitea integration ───────────────────────────────────
gitea:
owner: myorg
repo: myproject
# Path to Gitea's on-disk bare repos. Required for
# push_to_gitea, fetch_from_gitea, and the webhook flow.
# Typical locations:
# Gitea binary → /var/lib/gitea/data/repositories
# Gitea Docker → /data/git/repositories
# git user → /home/git/repositories
repos_path: /var/lib/gitea/data/repositories
# Webhook receiver (used by `webhook` command)
webhook_secret: "change-me-to-a-random-secret"
webhook_host: "0.0.0.0"
webhook_port: 8080
# ── Author mapping (SVN username → Git author) ──────────
authors:
"john": "John Doe <john@example.com>"
"jane": "Jane Doe <jane@example.com>"
# ── SVN poll interval (seconds) ─────────────────────────
sync_interval: 120