2 Stimmen

Holen Sie sich aus svn. Übertragen Sie an entferntes git.

Ich bin neu bei Git und versuche zu verstehen, ob es mein Problem lösen kann.

Ein Projekt hat ein öffentliches schreibgeschütztes SVN-Repo. Ich möchte meine eigenen Änderungen an seinem Quellcode im Laufe der Zeit vornehmen und verfolgen. Während ich gleichzeitig Änderungen aus dem SVN-Repo abrufe. Natürlich kann ich das einfach mit git-svn machen. Ein dcommit durchzuführen.

Das zusätzliche Problem besteht darin, dass ich von mehreren Standorten aus arbeite. Daher verwende ich ein Remote-Repo, um Dateien zwischen diesen Standorten zu synchronisieren. Das ist auch etwas, das ich mit Git leicht machen kann, indem ich ein Remote-Git-Repo verwende.

Aber wenn ich beides zusammenfüge, habe ich:

  • Abrufen vom Remote-SVN
  • Commit an lokales Git
  • Pull/Push zum Remote-Git.

Ist dies ein vernünftiger Arbeitsablauf mit Git? Wenn im Laufe der Zeit meine eigenen Änderungen/Commits mit Updates aus dem SVN-Repo vermischt werden. Wenn ja, wie sollte ich das einrichten.

Bedeutet das, sollte jeder Arbeitsort sein lokales Git direkt vom Remote-SVN abrufen lassen, auf vollständig dezentrale Weise. Oder sollte ich mir die Mühe machen, dass das einzelne Remote-Git-Repo selbst das SVN abruft. Um es den verschiedenen lokalen Gits zu erleichtern, die Änderungen vom SVN zu koordinieren, d.h. sie wie Änderungen vom Remote-Git-Repo aussehen zu lassen.

Ich kann git-svn nur auf dem Remote-Git-Repo-Host ausführen, wenn nötig.

1voto

Git kann dies ganz einfach tun.

Versuche dies:

git svn clone svn-url

Damit wird das Abrufen vom entfernten svn erledigt. Sie können dann Git wie gewohnt mit Branches usw. verwenden und weiterhin git svn pull auf dem Master durchführen, Änderungen in Ihren Entwicklungszweig einfügen usw. Ich tendiere jedoch dazu, ein separates Repository zu verwenden und dies zu tun:

git remote add svn /pfad/zum/git/repo/angelegt/aus/svn

Und ziehe vom SVN-Klon in mein Entwicklungspulver zurück. Es ist nur eine persönliche Präferenz, aber es hält mein "Import"-Repository sauber, und mein Entwicklungspulver denkt nur, dass es die Upstream-Codebasis ist. Ich könnte dies auch auf andere Git-Repositorys anwenden; ich bin mir nie sicher, ob ich dies über ein Git-svn-Repository setzen sollte, weil ich persönlich nie zurück zu SVN committe... bisher. Sie können dann

git remote add server remote-repo
git push server {branch}

Wie gewohnt.

1voto

bluebrother Punkte 8296

Wenn Sie git-svn auf Ihrem Remote-Server ausführen können, würde ich eine Einrichtung wie diese wählen:

  • Verwenden Sie einen speziellen Branch zum Verfolgen des upstream SVN-Repositorys. Lassen Sie den Server, der das Git-Repository hostet, den entfernten SVN-Branch unter Verwendung von git-svn in einem bekannten Branch (z. B. upstream) verfolgen.
  • Ziehen Sie von diesem Remote-Repository.
  • Verwenden Sie einen separaten Branch für Ihre Änderungen (oder mehrere Thema-Branches). Mergen Sie die Änderungen des Upstream-Branches in Ihren Thema-Branch(es). Sie können dann immer zwischen Ihrem Thema-Branch und dem Upstream-Branch diffen und die Unterschiede überprüfen. Wenn Sie den Thema-Branch nicht veröffentlichen, können Sie auch rebase verwenden, um Ihre Änderungen immer als Patches oben auf den Upstream-Änderungen zu erhalten.

Wenn Sie git-svn nicht auf dem Remote-Server ausführen können, würde ich es ziemlich ähnlich machen, aber es ist viel angenehmer, wenn der Remote-Server die SVN-Änderungen zieht, da Sie sich keine Sorgen darum machen müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X