2012-10-17 13 views
5

einzurichten Wir testen aus git als Repository-System anstelle unserer normalen svn. Es gibt ein SVN-Repository, das wir immer brauchen. In svn verlinken wir dieses Repository mit svn propset als svn: externals. Dies stellt sicher, dass es wirklich nur eine globale Kopie dieses speziellen, stark genutzten Repositories gibt.Versuch, ein SVN Repo in Git

Nun, da wir git-Repositories haben, möchte ich das SVN-Repository im Wesentlichen auf die gleiche Weise wie es mit svn: externals möglich ist, verknüpfen. Das ist mir etwas gelungen. Ich bin neu in Git, entschuldige bitte jede Ignoranz.

Im reinen git Repo (was ich über git clone [email protected]:mygitrepo klonen) I verwendet:

git svn clone svn+ssh://[email protected]/path/to/mysvnrepo mysvnrepo 

eine Kopie der anderen SVN-Repository zu bekommen. Das funktioniert super, ich kann neue Versionen des SVN-Repos über git svn rebase im mysvnrepo-Verzeichnis bekommen und Änderungen über git svn dcommit committen.

Um dies zu der Haupt-Git-Repository kombiniert ich verwendet:

git add mysvnrepo 
git commit mysvnrepo 
git push 

Das Problem, das ich habe, ist, wenn ich jetzt die git Repo woanders (wieder mit git clone [email protected]:mygitrepo) klonen, während ich das mysvnrepo Verzeichnis erhalten mit alle Dateien kann ich nicht mit dem SVN Repo interagieren. Ich erhalte den Fehler: "Upstream-SVN-Informationen aus dem Arbeitsbaumverlauf nicht ermitteln" nach git svn rebase. Möglicherweise verwandt, gibt es keinen .git-Ordner im mysvnrepo-Verzeichnis, wenn ich ihn anderswo kloniere (hier wird die Svn-Info im ursprünglichen Repo gespeichert).

Ich habe dieses Problem ein wenig gesucht, aber alle Verweise darauf scheint Probleme zu bekommen, die Svn Repo in erster Linie zu arbeiten, während mein Problem es für einen anderen Benutzer funktioniert.

Vielleicht ist mein Problem, wie erfolgreich hinzufügen/commit/schieben Sie den SVN Repo auf den Git Repo? d.h. ist: git add mysvnrepo; git commit mysvnrepot; git push; der richtige Weg, dies zu tun?

Edit: verbesserte mehr Kontext

+0

Wie klonen Sie das Repository? Mit "Git Clone" oder durch Auschecken aus SVN oder ...? – siegi

+0

meinst du das git repository in dem ich arbeite? sowohl für das ursprüngliche git-Repository als auch für den anderen Benutzer benutze ich 'git clone [email protected]: mygitrepo' –

Antwort

2

zu geben, was es sieht aus wie Sie versuchen, ein Git Repository in einer anderen zu tun ist, umfassen, wie würden Sie mit svn:externals. Es ist einfach so, dass das enthaltene Repository mit git svn erstellt wurde; Das wird nicht wirklich beeinflussen, wie Sie dieses Repository in ein anderes einbinden.

Sie müssen das Git-Repository, das Sie in den anderen öffentlich verfügbar irgendwo enthalten möchten. Sie können es entweder mit git submodule oder git subtree einfügen. Beide funktionieren nicht genau wie svn:externals; git subtree könnte jedoch anfängerfreundlich für andere Benutzer des Git-Repository sein.

Je nachdem, welche Sprache Sie verwenden und was Ihre Software ist, könnten Sie auch einfach ein separates Git-Repository für das stark genutzte Repository erstellen und dieses als eigene eigenständige Bibliothek, JAR-Datei oder was auch immer erstellen .

Das obige funktioniert nur gut, wenn Sie vorhaben, komplett auf git umzustellen. Wenn ein Teil Ihres Teams längere Zeit in SVN arbeitet, funktioniert git substree oder git submodule nicht für Sie.

Schauen Sie sich stattdessen this question an, um svn: externals mit git svn zu simulieren.

Um alle für die Verwendung mit Git einzustellen, folgen Sie dem letzten Beispiel unter "Basisbeispiele" in der Manpage . Jeder kann git clone dann ein paar Befehle lokal ausführen, anstatt eine volle git svn clone.

+0

Das Problem ist, ich möchte, dass Leute aus dem git-Repository mithilfe von' git zurück in das svn-Repository gehen können svn dcommit'. Ein globales Git-Repository für den gleichen Zweck zu erstellen, würde funktionieren, aber es wäre vom svn-Repository getrennt. das ist unerwünscht. Eine Lösung ist, jede Person manuell git svn klonen das SVN-Repository, dann sollten sie in der Lage zu begehen (wie ich kann, wenn ich es klonen) –

+0

Ich habe meine Antwort aktualisiert, um einige Details zu enthalten, was Sie in diesem Setup tun können . Eine langsame/teilweise Migration von SVN zu git mit svn: externals ist ein bisschen peinlich. Hoffentlich wird es dich oder dein Team nicht verscheuchen; git ist wirklich wunderbar, wenn man sich daran gewöhnt hat. – jbowes

Verwandte Themen