uberwald
1c8da2e73d
Actualiser README.md
2026-08-24 20:26:47 +02:00
uberwald
c14b17b92c
Cleanup snapshots
2026-08-24 20:26:05 +02:00
uberwald
ab10dc53d2
docs: add license info to README header
2026-08-23 21:13:09 +02:00
uberwald
da51730894
license: switch to PolyForm Noncommercial 1.0.0
2026-08-23 21:11:26 +02:00
uberwald
86d34cf3b7
docs: reframe as generic SVN-Git mirror, Gitea as example integration
2026-08-23 19:21:07 +02:00
uberwald
2b9ef5f2af
Add proprietary source code license
2026-08-23 18:48:43 +02:00
uberwald
fc6bca9c03
feat: add systemd install script for daemon-only deployment
...
The daemon already handles bidirectional sync (SVN→Git polling and
Git→SVN push), so a single systemd service is sufficient. The script
creates a venv, generates svn-mirror.service, and enables it for a
given user (default: gitea). README updated accordingly.
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
2026-08-19 13:32:40 +02:00
uberwald
6c413b6191
fix: handle empty svn commit output (no-op) gracefully
2026-07-16 16:10:32 +02:00
uberwald
daa8ebcc39
feat: auto-create SVN branch when git branch has no SVN counterpart
2026-07-16 15:55:10 +02:00
uberwald
31bf43dfc8
fix: remove --prune from push_to_gitea to avoid deleting user branches
2026-07-16 15:46:48 +02:00
uberwald
0035596551
fix: handle E155037 interrupt error, increase SVN timeouts for large branches
2026-06-29 22:54:49 +02:00
uberwald
3c5e9f9944
fix: auto-cleanup locked SVN WC, increase checkout timeout to 900s
2026-06-29 22:48:09 +02:00
uberwald
7f3fe388ad
fix: handle non-fast-forward in push_to_gitea gracefully
2026-06-24 15:38:35 +02:00
uberwald
24132b737e
fix: remove force flag from push_to_gitea heads refspec to avoid overwriting Gitea commits
2026-06-24 15:35:57 +02:00
uberwald
8b5f0d8ae2
chore: downgrade post-receive hook failure to debug
2026-06-24 13:52:27 +02:00
uberwald
324ec60c8c
fix: set GITEA_PUSH_VERIFIED for post-receive hook too
2026-06-24 13:49:08 +02:00
uberwald
7ae008717f
fix: use git fetch from Gitea side to transfer objects + update refs without triggering pre-receive hook
2026-06-24 13:47:50 +02:00
uberwald
f8093bf648
fix: pass changed refs list to post-receive hook
2026-06-24 13:34:10 +02:00
uberwald
811e3748d4
refactor: bypass Gitea pre-receive via update-ref + manual post-receive
2026-06-24 13:33:45 +02:00
uberwald
d123e80586
fix: fetch to refs/remotes/gitea/* instead of overwriting refs/heads/*
2026-06-24 13:18:12 +02:00
uberwald
ef910b6dd9
fix: call push_to_gitea every cycle to retry on failure
2026-06-24 13:13:52 +02:00
uberwald
05bc2b02ec
fix: set GITEA_PUSH_VERIFIED=1 to bypass Gitea pre-receive hook
2026-06-24 13:11:54 +02:00
uberwald
700a10579e
fix: pass auth_args to svn update/revert in _ensure_wc
2026-06-24 11:57:58 +02:00
uberwald
f0b5761d0e
fix: only include --password in auth_args if non-empty
2026-06-24 11:56:08 +02:00
uberwald
cf1b7e9994
fix: add --non-interactive to git_to_svn._run_svn, fix stdin/input exclusivity
2026-06-24 11:49:40 +02:00
uberwald
4f41bd3488
feat: daemon polls Gitea for new commits before sync_git_to_svn
2026-06-24 11:45:05 +02:00
uberwald
981daaef30
fix: add missing import os in svn.py
2026-06-24 11:23:25 +02:00
uberwald
485da0c549
fix: add --non-interactive, stdin=DEVNULL, and LC_ALL env to svn._run_svn
2026-06-24 11:19:37 +02:00
uberwald
e0e368cc9a
fix: always advance last_svn_revision even when no new revs (already mapped)
2026-06-24 10:41:25 +02:00
uberwald
07439d09b1
docs: update README with auth, locale, externals, Gitea hook, caveats from deploy experience
2026-06-24 10:40:23 +02:00
uberwald
e3c28fea9d
feat: set svn:author revprop after commit/tag to preserve real author
2026-06-24 10:31:00 +02:00
uberwald
9c319b3396
fix: don't override --username in svn commit/copy (use auth_args for both auth and author)
2026-06-24 10:22:56 +02:00
uberwald
7baef3c799
fix: pass auth_args to svn commit and svn copy calls
2026-06-24 10:18:10 +02:00
uberwald
e20a1c7baf
fix: add --ignore-externals to svn checkout/update (unrelated repo)
2026-06-24 10:14:27 +02:00
uberwald
f7d97c2c79
fix: use C.UTF-8 instead of C locale for svn subprocess (breaks non-ASCII filenames)
2026-06-24 10:10:15 +02:00
uberwald
2cb6a4b230
fix: ref_exists also checks git-svn remote ref variant for imported tags/branches
2026-06-23 22:19:12 +02:00
uberwald
4d6326231b
fix: record converted ref mappings (refs/tags/*, refs/heads/*) during import
2026-06-23 22:03:43 +02:00
uberwald
3536053b44
fix: pre-write SVN password to stdin to avoid deadlock on prompt
2026-06-23 13:33:11 +02:00
uberwald
2422673584
fix: pipe SVN password to git svn stdin when prompted
2026-06-23 13:30:55 +02:00
uberwald
d533427cac
fix: cache SVN creds before git svn clone, feed /dev/null to stdin
2026-06-23 13:26:09 +02:00
uberwald
99a056d9fb
feat: thread SVN auth (username/password) through all svn call sites
2026-06-23 13:23:44 +02:00
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