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).
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user