2010-01-20 6 views
6

Wir verwenden Svn, und ich benutze Git-Svn, um die Vernunft zu halten. An einem Punkt entschied sich unser SVN-Server, einen 403 für einen bestimmten Ordner zurückzugeben. Es ist jedem passiert, nicht nur mir.Ich muss einige Revisionen von Git-Svn abholen

Aus diesem Grund kann ich nicht eine git-svn-Rebase machen. Ich sehe diesen Fehler:

Index mismatch: 164adbb93408bed4ff0bdbcbf07bdfb2c49ed0ce != 64443edc6089f7f737e51cf8ea5ff3680c95a7e9 
rereading 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 
    M test/system-tests/src/test/java/com/garmin/elevation/ElevationManagerSystemTest.java 
    M test/activity-test/src/test/java/com/garmin/elevation/ElevationManagerIntegrationTest.java 
    M test/activity-test/src/test/java/com/garmin/mb/activity/service/ActivityServiceManagerIntegrationTest.java 
    M system/deployment/src/main/resources/oracle/releases/2.9-SNAPSHOT/110-preference/4-data.dml.sql 
    M pom.xml 
service/activity-service-1.2/src/main/java/com/garmin/activity/service/impl/ActivityServiceImpl.java was not found in commit 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 (r8845) 

Die Datei, die es über beschwert am Ende ist in dem Ordner, der ein 403 zurückkehrt, wenn wir den Fehler hatten. In meinem Dateisystem existiert der Service/Activity-Service-Ordner nicht. Ich glaube, es versucht, die Datei zu ändern (so sieht die Änderung in SVN aus), aber da die Datei nicht existiert, explodiert sie einfach.

Also ich denke, wenn ich in der Lage, frühere Revisionen zu entfernen, und dann erneut abrufen, könnte es einfach funktionieren. Ich bin mir nicht sicher, wie ich das machen soll. Ich habe versucht, interaktiv zu rebasieren und dann einen Haufen zu löschen, aber das hat nicht funktioniert.

Also weiß jemand, wie bereits abgerufene Versionen abholen?

Antwort

8

Erstellen Sie zuerst eine Sicherungskopie Ihres .git-Verzeichnisses.

Entfernen Sie die Datei .rev_map.$UUID für den Problemzweig unter .git/svn; und spulen Sie den git-svngenerierten Zweig zurück, der den Problemzweig darstellt (normalerweise trunk). Um den Zweig zurückzuspulen, führen Sie git pack-refs --all, git log $BRANCH aus, suchen Sie das Commit vor dem Problem Commit, und bearbeiten Sie .git/packed-refs, sodass der Zweig jetzt auf das ältere Commit verweist. Führen Sie dann git svn fetch. Es wird die rev-map von Ihrem bestehenden, zurückgespeicherten Zweig neu erstellen und dann die svn-Commits abrufen, die Sie noch nicht haben, einschließlich des Problem-Commits. Sie sollten nun in der Lage sein, normal zu rebasen und zu committen.

9

Ein besserer Weg, dies jetzt zu tun ist, git svn reset -r <rev> wo rev die Revision vor ist, wo Sie beginnen Erneutes Abrufen wollen. Danach starten Sie einfach git svn fetch und es wird seinen Index neu erstellen und die Revisionen nach rev abrufen.

Verwandte Themen