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).
45 lines
1.5 KiB
Plaintext
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
|