webentwicklung-frage-antwort-db.com.de

Anweisungen zur Verwendung von TortoiseGit für die Interaktion mit einem SVN-Repository?

Ich verwende TortoiseSVN unter Windows seit Jahren mit lokalen Dateisystem-Repositorys für meine eigenen Projekte. Ich plane, mit einem Freund an einem der Projekte zusammenzuarbeiten und werde das Repository auf meine eigene Website verlagern. Ich habe eine Menge "Git Beats SVN!" Gelesen. Posts in den letzten paar Jahren, und ich dachte, ich sollte zumindest sehen, worum es ging. Einige Nachforschungen haben den Befehl "git svn" ergeben und TortoiseGit behauptet, eine gewisse Unterstützung für git-svn zu haben. Ich mag die Idee, das SVN-Repository zu behalten und einige lokale Commits oder Verzweigungen mit git durchzuführen, bevor sie in das Repository übernommen werden. Der Befehl "shelve" klingt ebenfalls nützlich.

Leider gibt es zwar eine Reihe von CLI git-svn-Tutorials, aber nichts für TortoiseGit (was sich zugegebenermaßen noch in der frühen Entwicklung zu befinden scheint). Infolgedessen habe ich Probleme, herauszufinden, welchen Workflow ich benötige, um diese Teile zur Zusammenarbeit zu bewegen.

Ich habe ein SVN-Repository in D:\Projects\repositories\MyProject. Ich habe D:\Projects\temp\gittest erstellt und versucht, einen TortoiseGit "Git Clone" des Repositorys zu erstellen. Von dort aus gab es Probleme beim Versuch, den Speicherort der Ordner trunk/branches/tags anzugeben (dies ist nur das Standardlayout in meinem Repository). Ich konnte nur dann nützliche Ergebnisse erzielen, wenn ich diese nicht aktiviert hatte. Als das Git-Repository anscheinend richtig gestartet wurde, konnte ich einige Änderungen vornehmen und ein paar Git-Commits durchführen, hatte dann aber Probleme, ein SVN-DCommit durchzuführen.

Ich hoffe also, dass jemand da draußen eine einigermaßen detaillierte Anleitung zur korrekten Verwendung von TortoiseGit mit einem vorhandenen SVN-Repository (mit dem Repository entweder im lokalen Dateisystem oder auf einem Remote-Server) bereitstellen kann. Nein "SVN nicht verwenden!" Antworten, bitte - ich bin daran interessiert zu lernen, wie diese beiden Teile zusammenarbeiten. Wenn Sie der Meinung sind, dass die SVN-Unterstützung von TortoiseGit nicht ausgereift genug ist, um diese Funktion zu nutzen, sind dies auch nützliche Informationen.

Vielen Dank!

38
markerikson
  1. Erstellen Sie ein Verzeichnis
  2. rechtsklick "Git Clone ..."
  3. Aktivieren Sie "From SVN Repository" und wählen Sie alle weiteren Einstellungen aus
25
StefanPapp

Update: Ich stehe zu meiner Antwort auf die schriftliche Frage ("Ich plane die Zusammenarbeit mit einem Freund ..."), aber wenn Sie Subversion behalten wollen/müssen, hat mir das ziemlich gefallen mein git-svn workflow .

Der einzige Grund, warum git-svn existiert, ist die Verwendung von Git neben einer vorhandenen Subversion-Infrastruktur. Da Sie im Wesentlichen über keine Infrastruktur verfügen, besteht absolut kein Grund, nicht einfach komplett auf Git umzusteigen. git-svn ist besser als svn, sollte aber möglichst vermieden werden.

Ich würde Sie dringend dazu auffordern, git svn clone -s --no-metadata <path_to_svn> zu vergessen, dass Sie jemals svn hatten.

9
dahlbyk

Dies ist wahrscheinlich jetzt offensichtlich, aber Tortoisegit hat jetzt eine integrierte Unterstützung für git-svn.

8
JBCP

Es wurde schon vorher bemerkt - nur als richtige Antwort hier :)

TortoiseGit unterstützt jetzt SVN. Es sollte also einwandfrei funktionieren.

3
getack

Sie können versuchen, TortoiseGit ohne integrierte SVN-Unterstützung zu verwenden, anstatt als gewöhnlicher Git-Client. Damit dies funktioniert, können Sie SubGit in das SVN-Repository installieren.

Im Folgenden sind einige grundlegende Anweisungen zum Einrichten von SubGit aufgeführt:

$ subgit configure SVN_REPOS
# Adjust SVN_REPOS/conf/subgit.conf to specify your branches and tags
# Adjust SVN_REPOS/conf/authors.txt to specify git & svn authors mapping
$ subgit install SVN_REPOS
...
$ INSTALLATION SUCCESSFUL

Nach der Installation können Sie das Git-Repository unter SVN_REPOS/.git finden und wie das normale Git-Repository damit arbeiten. Jeder von TortoiseGit durchgeführte git Push löst Hooks vor dem Empfang und nach dem Empfang aus, die eingehende Änderungen in das SVN-Repository replizieren.

Weitere Informationen finden Sie auf der SubGit-Dokumentation und git-svn vergleichsseite.

Ab Version 2.0 (zum Zeitpunkt der Veröffentlichung noch nicht veröffentlicht) ermöglicht SubGit die Synchronisation von Subversion- und Git-Repositorys auf verschiedenen Hosts.

SubGit ist ein kommerzielles Tool, aber es ist kostenlos für Repositories mit bis zu 10 Committern sowie für Open Source- und akademische Projekte.

Haftungsausschluss: Ich bin einer der Entwickler von SubGit.

1
vadishev

Ich habe msysgit von http://msysgit.github.com/ verwendet, damit ich aus dem Subversion-Repository ziehen kann, was das Akzeptieren des Sicherheitszertifikats und anderer Befehlsoptionen erfordert. Nachdem der Code abgezogen wurde, konnte ich TortoiseGit für die meisten Funktionen verwenden (außer dem svn Push AFAIR).

1
Hara Hara

Nur zur Information: SourceTree für Windows plant die Unterstützung von git-svn (und hgsubversion) ab Version 1.4. Das entsprechende Problem ist SRCTREEWIN-119 .

0
cimnine

Möglicherweise können Sie Ihre Projekte auf github setzen, das svn access unterstützt. So können Sie TortoiseSVN weiterhin verwenden und mit anderen zusammenarbeiten. Auf der anderen Seite können Sie Dinge wie Sourceforge usw. verwenden, um über SVN anstelle von Git zusammenzuarbeiten. Übrigens, warum nicht git svn clone URLOfTheSVNRepos verwenden und später stattdessen git-Commits ausführen.

0
khmarbaise