2009-11-07 8 views
15

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

4

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).

+0

Danke, mit github scheint der Weg zu gehen –

2

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.

+0

schön, danke –

+1

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). –

+2

@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. –

Verwandte Themen