Was wäre der beste Weg, um eine Read-only-Git-Spiegelung eines vorhandenen Svn-Repository einzurichten und Post-Commit-Hooks so einrichten, dass, wenn jemand zu Svn, der Git verpflichtet Spiegel wird automatisch aktualisiert? Hauptsächlich möchte ich den git-svn-Klon nur einmal auf dem Server ausführen und die Leute dann einfach von git auschecken lassen, ohne git-svn das gesamte svn-Repository selbst klonen zu müssen.schreibgeschützt git mirror eines svn repository
Antwort
Ich mache das auf einem Projekt, das SVN verwendet (Pushing zu einem öffentlichen Repository auf Github). Ich habe keine SVN Haken begehen, aber dies auf einem cron-Job:
#!/bin/bash
repo=/path/to/my-mirror.git
lockfile="$repo/cron-lock"
if ! lockfile -r1 "$lockfile";then
exit 1
fi
export GIT_DIR=$repo
# update refs/remotes/git-svn:
git svn fetch -q
# make 'master' match the git-svn branch:
git fetch "$repo" refs/remotes/git-svn:refs/heads/master
# publish to github
git push github master
rm -f "$lockfile"
Wenn Sie dies aus einem SVN commit statt einem Cron-Job auslösen, sollte es funktionieren.
Natürlich müssen Sie eine Fernbedienung namens github
mit git remote add github [...]
einrichten. Das von mir verwendete Git-Repository ist ein "blankes" Repository (siehe git init --bare
).
Die beste Möglichkeit, einen Svn/Git-Spiegel (beschreibbar) einzurichten, wäre SubGit - ein speziell für diese Aufgabe entwickeltes Werkzeug. Haftungsausschluss: Ich bin der Entwickler dieses Tools.
schön, danke –
Außerdem benötigt SubGit 2.0 nicht mehr lokalen Zugriff auf das Subversion-Repository und könnte auch einen beschreibbaren Git-Spiegel eines entfernten Subversion-Repository erstellen (siehe http: // subgit.com/eap). –
@AlexanderKitaev Bitte beachten Sie, dass Sie Ihre Mitgliedschaft offenlegen müssen, wenn Sie auf ein Produkt oder eine andere Website verlinken. Ich sehe von [diesem Beitrag] (http://stackoverflow.com/a/13288270/2057919), dass Sie SubGit entwickelt haben. Ich habe diese Antwort bearbeitet, um das zu reflektieren. In Zukunft sollten Sie Ihre Verbindung unbedingt erwähnen, wenn Sie mit SubGit verlinken. –
Danke, mit github scheint der Weg zu gehen –