Следующей системой из которой мы импортируем репозиторий станет Perforce.
Вы уже знаете, что существует два способа подружить Git и Perforce: git-p4
и Git Fusion.
Git Fusion делает процесс переноса вполне безболезненным. Просто настройте проект, соответствия между пользователями и ветки в конфигурационном файле как показано в [r_p4_git_fusion] и клонируйте репозиторий. В результате вы получите настоящий Git репозиторий, который, при желании, можно сразу же отправлять на удалённый Git сервер. Вы даже можете использовать Perforce в качестве такового.
git-p4
также можно использовать для переноса репозитория.
В качестве примера мы импортируем проект «Jam» из публичного депо Perforce.
Вначале нужно указать адрес депо в переменной окружения P4PORT
.
$ export P4PORT=public.perforce.com:1666
Note
|
Для дальнейших экспериментов вам понадобится доступ к Perforce депо. Мы используем общедоступное депо на public.perforce.com, но вы можете взять любое другое, к которому у вас есть доступ. |
Запустите команду git p4 clone
чтобы импортировать проект «Jam» с Perforce сервера, передав ей путь к проекту в депо и каталог, в который хотите импортировать репозиторий:
$ 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%)
Конкретно этот проект имеет одну ветку, но если бы их было несколько, вы бы просто могли передать флаг --detect-branches
в git p4 clone
.
Перечитайте раздел [r_git_p4_branches] для подробностей.
На данном этапе репозиторий почти готов.
Если вы перейдёте в каталог p4import
и выполните git log
, вы увидите результат:
$ 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]
git-p4
оставил идентификаторы в сообщениях всех коммитов.
Ничего страшного нет в том, чтобы оставить всё как есть, особенно если вы захотите сослаться на номер ревизии в Perforce в будущем.
Если же вы хотите убрать эти строки, теперь — прежде чем приступать к работе с репозиторием — самое время для этого.
Вы можете использовать git filter-branch
чтобы удалить идентификаторы из всех сообщений одним махом:
$ git filter-branch --msg-filter 'sed -e "/^\[git-p4:/d"'
Rewrite e5da1c909e5db3036475419f6379f2c73710c4e6 (125/125)
Ref 'refs/heads/master' was rewritten
Если вы сейчас выполните git log
, вы увидите, что SHA-1 хеши коммитов изменились, а строки git-p4
исчезли из сообщений:
$ 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).
Теперь ваш репозиторий готов к отправке на Git сервер.