Skip to content

Latest commit

 

History

History
105 lines (80 loc) · 4.14 KB

File metadata and controls

105 lines (80 loc) · 4.14 KB

Perforce

Het volgende systeem waar we naar gaan kijken is het importeren uit Perforce. Zoals hierboven besproken, zijn er twee manieren om Git en Perforce met elkaar te laten praten: git-p4 en Perforce Git Fusion.

Perforce Git Fusion

Met Git Fusion verloopt dit proces vrijwel pijnloos. Configureer alleen je project settings, user mappings en branches met behulp van een configuratie bestand (zoals behandeld in [_p4_git_fusion]), en clone de repository. Git Fusion geeft je iets wat eruit ziet als een echte Git repository, die dan klaar is om naar een reguliere Git host te pushen als je dat wilt. Je kunt zelfs Perforce als je Git host gebruiken als je dat wilt.

Git-p4

Git-p4 kan ook als een importeer gereedschap werken. Als voorbeeld zullen we het Jam project importeren van de Perforce Public Depot. Om je werkstation in te richten, moet je de P4PORT omgevingsvariabele exporteren zodat deze wijst naar het Perforce depot:

$ export P4PORT=public.perforce.com:1666
Note

Om dit mee te kunnen doen, moet je een Perforce depot hebben om mee te verbinden. Wij zullen het publieke depot op public.perforce.com gebruiken in onze voorbeelden, maar je kunt elk depot waar jetoegang toe hebt gebruiken.

Roep het git p4 clone commando aan om het Jam project van de Perforce server te importeren, waarbij je het pad van het depot en het project en het pad waar je het project in wilt importeren meegeeft:

$ 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%)

Dit specifieke project heeft maar een branch, maar als je branches hebt die geconfigureerd zijn met branch views (of alleen een set directories), kan je de --detect-branches vlag gebruiken bij git p4 clone om alle branches van het project ook te importeren. Zie [_git_p4_branches] voor wat meer diepgang op dit onderwerp.

Op dit punt ben je bijna klaar. Als je naar de p4import directory gaat en git log aanroept, kan je je geïmporteerde werk zien:

$ 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]

Je kunt zien dat git-p4 een identificerend element heeft achtergelaten in elk commit-bericht. Je kunt dit element prima daar laten, in het geval dat je in de toekomst naar het Perforce change nummer moet refereren. Echter, als je dit element wilt weghalen, is dit het moment om het te doen - voordat je begint te werken met de nieuwe repository. Je kunt git filter-branch gebruiken om de element-tekenreeksen en masse te verwijderen:

$ git filter-branch --msg-filter 'sed -e "/^\[git-p4:/d"'
Rewrite e5da1c909e5db3036475419f6379f2c73710c4e6 (125/125)
Ref 'refs/heads/master' was rewritten

Als je git log aanroept, kan je zien dat alle SHA-1 checksums voor de commits zijn gewijzigd, maar de git-p4 tekenreeksen staan niet meer in de commit-berichten:

$ 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).

Je import is klaar om te worden gepusht naar je nieuwe Git server.