dies ist der Workflow ich zur Zeit für meine SVN-Projekte verwenden (ich nie SVN Zweige verwenden, und einige Projekte werden auch von anderen Menschen aktiv bearbeitet):git & svn externals - eine endgültige Lösung noch?
- auf dem Server, die inital
git svn fetch
tut der Macht Stunden dauern. Erstellen Sie auch einen 'build' Zweig. - auf einer Klonen Entwicklung Maschine ist schnell jetzt:
git clone srv://project.git, git checkout build
vongit update-refs ..., git svn fetch
folgte dem Link zum SVN-Repository - Arbeit verpflichten, die Arbeit verpflichten, wiederherzustellen ...
- zu überprüfen, ob die Dinge vernünftig sind,
git push build
auf die Server und triggert einen Build in Hudson für diesen Zweig - um Arbeit zu speichern, so dass ich von einer anderen Maschine darauf arbeiten kann, auch Push-Build-Zweig
- wenn Sie zufrieden sind, Join commits in logischen Schritten zusammen (zB eine für jeden Fehler) , Commit zu Svn und Reset alles wie
git checkout master, git merge build, git svn dcommit, git push, git checkout build, git rebase master, git push build
Geben Sie svn externals ein. Ich habe jedes Skript here bereits versucht, aber alle von ihnen scheitern. Meine Äußerlichkeiten sind Setup wie folgt aus:
/path/to/x x
/path/to/y/z y/z
/path/to/a/b.file a/b.file
und die Skripte Dinge tun, wie der Versuch, /path/to/x
in der Wurzel des Dateisystems und git svn fetch /path/to/x
zu erstellen. Auch die einzelnen Dateien scheinen mehr Probleme zu verursachen. (Unterfrage 1: Was ist das svn: Externes Format, für das diese Skripte geschrieben wurden?)
Es scheint nicht schwer zu sein, eines der Skripts zu modifizieren, um mit meiner Situation umzugehen und die Verzeichnisstruktur zu replizieren, nach der ich richtig suche. Aber dann habe ich ein großes Problem: Wenn ich eine Datei in den Verzeichnissen x und y/z ändere, sehe ich keine Möglichkeit, dies zu einem einzigen SVN-Commit zu machen, und das ist einer der Gründe, warum ich angefangen habe git an erster Stelle.
Daher die Frage: Gibt es eine Möglichkeit, ich kann den obigen Workflow replizieren, nur Teile eines bestimmten SVN-Repository verwenden, so dass ich Svn DCommit im Stamm tun kann? Ich würde eine fertige Lösung bevorzugen, die sowohl unter Linux als auch unter Windows funktioniert.
bearbeiten Ich hackte schnell durch eines der Skripte, die ich fand und replizierte es die Verzeichnisstruktur des SVN externals. Ich kann allerdings nicht einzelne Dateien klonen, ist hier Ausgabe:
git svn clone -r HEAD srv://svn/repo/path/to/projects.sln
Initialized empty Git repository in xxx/projects.sln/.git/
Invalid filesystem path syntax: REPORT request failed on '/svn/repo/!svn/vcc/default':
Cannot replace a directory from within at yyy/git/libexec/git-core/git-svn line 5114
Teilfrage 2: ist es nicht möglich, eine einzelne Datei über git svn holen?
Ich fand, dass [dieses Skript] (https://github.com/mgee/git-svn-ext) mit den aktuellen Versionen von SVN und Git funktioniert –
@IvanKoblik danke für das Posting, obwohl ich zugeben muss, dass ich einfach auf alle Repositories synchron beendet habe und stattdessen alle Kollegen gezwungen habe, einfach nur git zu benutzen: P – stijn
Nach der Verwendung für eine Weile sogar mit dem Skript ist es sehr umständlich Ich denke, Git-Svn schneidet es nicht für SVN-Repositories mit externen, Ihr Sol Die beste Wahl ist. –