Bei dem nächsten System, aus dem du importieren könntest, handelt es sich um Perforce. Wie bereits erwähnt, gibt es zwei Möglichkeiten, wie Git und Perforce miteinander kommunizieren können: git-p4 und Perforce Git Fusion.
Git Fusion macht diesen Prozess relativ unkompliziert. Konfiguriere einfach deine Projekteinstellungen, Benutzerzuordnungen und Branches mit Hilfe einer Konfigurationsdatei (wie in [_p4_git_fusion] beschrieben) und klone das Repository. Git Fusion bietet dir ein natives Git-Repository, mit dem du nach Belieben auf einen nativen Git-Host wechseln kannst. Du kannst Perforce sogar als deinen Git-Host verwenden, wenn du möchtest.
Git-p4 kann auch als Import-Tool fungieren. Als Beispiel werden wir das Jam-Projekt aus dem Perforce Public Depot importieren. Um deinen Client einzurichten, musst du die Umgebungsvariable P4PORT exportieren und auf das Perforce-Depot verweisen:
$ export P4PORT=public.perforce.com:1666
Note
|
Zur weiteren Bearbeitung benötigst du ein Perforce-Depot, mit dem du dich verbinden kannst. Wir werden das öffentliche Depot unter public.perforce.com für unsere Beispiele verwenden. Du kannst aber jedes Depot nutzen, zu dem du Zugang hast. |
Führe den Befehl git p4 clone
aus, um das Jam-Projekt vom Perforce-Server zu importieren, wobei du das Depot, den Projektpfad und den Pfad angibst, in den du das Projekt importieren möchtest:
$ git-p4 clone //guest/perforce_software/jam@all p4import
Importing from //guest/perforce_software/jam@all into p4import
Initialized empty Git repository in /private/tmp/p4import/.git/
Import destination: refs/remotes/p4/master
Importing revision 9957 (100%)
Dieses spezielle Projekt hat nur einen Branch, aber wenn du Branches hast, die mit Branch Views (oder nur einer Gruppe von Verzeichnissen) eingerichtet sind, kannst du ergänzend zum Befehl git p4 clone
das Flag --detect-branches
verwenden, um alle Branches des Projekts zu importieren.
Siehe [_git_p4_branches] für ein paar weitere Details.
Jetzt bist du fast fertig.
Wenn du in das Verzeichnis p4import
wechselst und git log
ausführst, kannst du dein importiertes Projekt sehen:
$ git log -2
commit e5da1c909e5db3036475419f6379f2c73710c4e6
Author: giles <giles@[email protected]>
Date: Wed Feb 8 03:13:27 2012 -0800
Correction to line 355; change </UL> to </OL>.
[git-p4: depot-paths = "//public/jam/src/": change = 8068]
commit aa21359a0a135dda85c50a7f7cf249e4f7b8fd98
Author: kwirth <[email protected]>
Date: Tue Jul 7 01:35:51 2009 -0800
Fix spelling error on Jam doc page (cummulative -> cumulative).
[git-p4: depot-paths = "//public/jam/src/": change = 7304]
Du kannst sehen, dass git-p4
in jeder Commit-Nachricht eine Kennung hinterlassen hat.
Es ist gut, diese Kennung dort zu behalten, falls du später auf die Perforce-Änderungsnummer verweisen musst.
Wenn du den Identifier jedoch entfernen möchtest, ist jetzt der richtige Zeitpunkt – bevor du mit der Arbeit am neuen Repository beginnst.
Du kannst git filter-branch
verwenden, um die Identifikations-Strings in großer Anzahl zu entfernen:
$ git filter-branch --msg-filter 'sed -e "/^\[git-p4:/d"'
Rewrite e5da1c909e5db3036475419f6379f2c73710c4e6 (125/125)
Ref 'refs/heads/master' was rewritten
Wenn du git log
ausführst, kannst du sehen, dass sich alle SHA-1-Prüfsummen für die Commits geändert haben, aber die git-p4
Zeichenketten sind nicht mehr in den Commit-Nachrichten enthalten:
$ git log -2
commit b17341801ed838d97f7800a54a6f9b95750839b7
Author: giles <giles@[email protected]>
Date: Wed Feb 8 03:13:27 2012 -0800
Correction to line 355; change </UL> to </OL>.
commit 3e68c2e26cd89cb983eb52c024ecdfba1d6b3fff
Author: kwirth <[email protected]>
Date: Tue Jul 7 01:35:51 2009 -0800
Fix spelling error on Jam doc page (cummulative -> cumulative).
Dein Import ist bereit, um ihn auf deinen neuen Git-Server zu pushen.