2016-05-09 11 views
1

So habe ich mich entschieden, das svn2git Werkzeug nach einer soliden Empfehlung zu verwenden. Um das Repository zu migrieren, brauche ich die authors-Datei und die rules-Datei zusammen mit dem Repository selbst. Ich habe alle drei zusammen gestellt und unter ein Verzeichnis gestellt, das ich vorerst myRepository_test nenne. Ich erwarte, dass mein neues Git-Repository nach der Migration hier sein wird.svn2git Migration: Regeln

Hier ist die Repository-Struktur I haben derzeit:

- myRepository 
    -- myRepository.release 
    -- myRepository.mapping 
    -- myRepository.base 
    -- .. 

Insgesamt habe ich rund 30 Projekte hier.

Hiermit teile ich meine Dateien gemeinsam nutzen, die verwendet wird:

authormap.txt:

egent = Emma Gent <[email protected]> 
gstar = Gabriel Star <[email protected]> 
. 
. 

Im Moment habe ich nur für 2 Projekte versuchen wollte, so:

myRepository.Rules:

create repository myRepository 
end repository 

# main history 

match /trunk/myRepository/myRepository.release/ 
    repository myRepository 
    branch master 
end match 

match /trunk/myRepository/myRepository.mapping/ 
    repository myRepository 
    branch master 
end match 

# Ignore everything else 
match/
end match 

, die den endgültigen Befehl macht:

./svn-all-fast-export --identity-map authormap.txt --rules myRepository.rules --add-metadata http://address/svn/myRepository 

die als endet:

Loading rules from: "myRepository.rules" 
Loading rules from "myRepository.rules" 
Could not read the rules file: myRepository.rules 
Aborted (core dumped) 

ich über den Inhalt der Regeldatei nicht ganz sicher bin, wäre schön, wenn mir jemand bezüglich helfen könnte, dass .

Vielen Dank im Voraus.

Antwort

1

Die Nachricht, die Sie erhalten, bedeutet nicht, dass die Syntax falsch ist, die Syntax sieht gut aus. Es kann die Datei selbst nicht finden oder lesen. Rufen Sie svn-all-fast-export von wo das Verzeichnis an, in dem Ihre myRepository.rules Datei liegt. Und haben Sie Leseberechtigung für die Datei als Benutzer, den Sie anrufen svn-all-fast-export?

In Bezug auf den Inhalt der Regeldatei, denke ich nicht, dass es bereits vollständig korrekt ist. Sie speichern den Inhalt von myRepository.release und myRepository.mapping im Stammverzeichnis Ihres Repositorys. Wenn das das war, was Sie vorhatten, ist es in Ordnung. Wenn nicht, sollten Sie wahrscheinlich eine prefix Regel in dem match Block verwenden, damit der Inhalt zu separaten Unterverzeichnissen hinzugefügt wird. Aber Sie werden dies sehen, nachdem Sie das Tool trotzdem erfolgreich ausführen konnten.

Und noch eine Anmerkung, die match Ausdrücke sind reguläre Ausdrücke, so möchten Sie möglicherweise die . zu entkommen und match /trunk/myRepository/myRepository\.release/ haben. Oder wenn Sie wirklich den Inhalt im gleichen Ordner wollen auch

match /trunk/myRepository/myRepository\.(release|mapping)/ 
    repository myRepository 
    branch master 
end match 

oder wenn Sie wollen subdirs

match /trunk/myRepository/myRepository\.(release|mapping)/ 
    repository myRepository 
    branch master 
    prefix \1 
end match 

oder

match /trunk/myRepository/(myRepository\.(release|mapping))/ 
    repository myRepository 
    branch master 
    prefix \1 
end match 
+0

Oh ja, diese Ordner (Mapping, Freigabe usw.) sollen getrennte Unterverzeichnisse unter dem Repository sein, danke für den Fang. Also gut, Hinzufügen von 'Präfix \ 1'. Punkt in Bezug auf die '.' auch, getan. Schließlich führe ich das Skript aus dem gleichen Verzeichnis, in dem meine Regeln und Author-Dateien sind. Sollte ich aus dem Ordner "svn2git" starten, in dem sich das Skript ursprünglich befindet (wie es dort installiert ist)? –

+1

Ich habe deine letzten zwei Sätze nicht ganz bekommen. Aber Sie müssen 'svn2git' von dort ausführen, wo Sie das resultierende Git-Repository/-ies finden möchten. Für jedes Repository, das Sie in der Regeldatei konfiguriert haben, haben Sie ein wahrscheinlich benanntes Unterverzeichnis mit dem dort erstellten Git-Repository. Die Argumente für "--rules" und "--identity-map" sind relative Pfade zu den Dateien, von denen aus Sie das Programm ausführen. Wenn Sie es also aus dem Verzeichnis ausführen, in dem sich die Dateien befinden, haben Sie entweder einen Tippfehler im Dateinamen oder Sie haben keine Leseberechtigungen für die Datei. – Vampire

+0

Ich tat es, diesmal gab es einen anderen Fehler. 'Erstellen neues Repository „MyRepository“ svn: Kann Datei nicht öffnen ‚http: // Adresse/svn/MyRepository/Format‘: Keine solche Datei oder das Verzeichnis repository' öffnen konnte nicht, warum es für das sieht '/ Format' sowieso? –