Nästa system att importera från är Perforce. Som vi diskuterade ovan finns det två sätt att låta Git och Perforce prata med varandra: git-p4 och Perforce Git Fusion.
Git Fusion gör den här processen ganska smärtfri. Konfigurera bara dina projektinställningar, användarmappningar och grenar med en konfigurationsfil (som diskuterats i [_p4_git_fusion]), och klona kodförrådet. Git Fusion lämnar dig med vad som ser ut som ett inbyggt Git‑kodförråd, som sedan är redo att skickas upp till en vanlig Git‑värd om du vill. Du kan till och med använda Perforce som Git‑värd om du vill det.
Git-p4 kan också fungera som importverktyg.
Som exempel importerar vi Jam‑projektet från Perforce Public Depot.
För att sätta upp din klient måste du exportera miljövariabeln P4PORT så att den pekar på Perforce‑depån:
$ export P4PORT=public.perforce.com:1666|
Note
|
För att hänga med behöver du en Perforce‑depå att ansluta till. Vi använder den publika depån på public.perforce.com i våra exempel, men du kan använda vilken depå du har åtkomst till. |
Kör kommandot git p4 clone för att importera Jam‑projektet från Perforce‑servern och ange depån, projektsökvägen och sökvägen dit du vill importera projektet:
$ 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%)Detta projekt har bara en gren, men om du har grenar som är konfigurerade med gren‑views (eller bara en uppsättning kataloger) kan du använda flaggan --detect-branches till git p4 clone för att importera alla projektets grenar också.
Se [_git_p4_branches] för lite mer detaljer om detta.
Nu är du nästan klar.
Om du går till katalogen p4import och kör git log kan du se ditt importerade arbete:
$ git log -2
commit e5da1c909e5db3036475419f6379f2c73710c4e6
Author: giles <giles@giles@perforce.com>
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 <kwirth@perforce.com>
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 kan se att git-p4 har lämnat en identifierare i varje incheckningsmeddelande.
Det är okej att behålla den identifieraren där om du behöver hänvisa till Perforce‑ändringsnumret senare.
Men om du vill ta bort identifieraren är det nu du ska göra det – innan du börjar arbeta i det nya kodförrådet.
Du kan använda git filter-branch för att ta bort identifierarsträngarna i ett enda svep:
$ git filter-branch --msg-filter 'sed -e "/^\[git-p4:/d"'
Rewrite e5da1c909e5db3036475419f6379f2c73710c4e6 (125/125)
Ref 'refs/heads/master' was rewrittenOm du kör git log ser du att alla SHA‑1‑kontrollsummor för incheckningarna har ändrats, men git-p4‑strängarna syns inte längre i incheckningsmeddelandena:
$ git log -2
commit b17341801ed838d97f7800a54a6f9b95750839b7
Author: giles <giles@giles@perforce.com>
Date: Wed Feb 8 03:13:27 2012 -0800
Correction to line 355; change </UL> to </OL>.
commit 3e68c2e26cd89cb983eb52c024ecdfba1d6b3fff
Author: kwirth <kwirth@perforce.com>
Date: Tue Jul 7 01:35:51 2009 -0800
Fix spelling error on Jam doc page (cummulative -> cumulative).Din import är redo att skickas upp till din nya Git‑server.