Ответ 1
Попробуйте добавить "@all" в путь к файлу. Например, для меня создается однорежимное репо:
python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \
//depot/services/master-pom/trunk/...
Эта команда импортировала всю историю:
python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \
//depot/services/master-pom/trunk/[email protected]
Я попытался использовать пример git -p4, но отказался по нескольким причинам и написал свой собственный быстрый импортный насос. Это было некоторое время назад, поэтому некоторые из проблем, возможно, были исправлены сейчас: но git -p4 имел проблемы с большими списками изменений (такими как начальное создание ветки) (хотя использование спецификации клиента могло помочь, я не Думаю, я это пробовал) и файлы с модификатором типа "+ S" (который является "Плохим и злым", но мы использовали его). И мой Python-fu не позволил мне исправить проблемы, которые у меня были.
EDIT: так как кто-то спросил об этом, вот оно.
https://github.com/araqnid/p4utils имеет несколько вещей p4, из которых p4- git -xfer - это p4 → git (one- ) репликатор. У этого есть довольно много проблем, хотя, из-за того, что в основном это личный инструмент, а не реальная часть инфраструктуры.
Начало работы:
p4-git-xfer clone -d $PWD/dictionary.git -n //depot/services/midoffice/dictionary/... \
trunk 'release/*' 'branch/*' \
trunk=master release/*=r* branch/*=dev/*
будет клонировать этот путь perforce к голой "dictionary.git". Первые аргументы после базового пути - это "спецификации ветвей", которые сообщают репликатору, где можно найти ветки под базой. Более поздние (с символами "=" ) являются "зеркальными спецификациями", которые говорят репликатору, как создавать локальные ветки из импортированных. Спецификации ветки вызывают "refs/remotes/p4/trunk", "refs/remotes/p4/release/1.0" и т.д., Которые должны быть созданы. Зеркальные спецификации заставляют "refs/heads/master" зеркально отображать "refs/remotes/p4/trunk", "refs/heads/r1.0" для зеркалирования "refs/remotes/p4/release/1.0" и т.д. как способ позволить мне выбирать только отдельные ветки из тех, которые были реплицированы, чтобы распространить их на клоны.
Он попытается определить, как создается ветвь, но это немного похоже на Perforce. Кроме того, он не пытается вообще отслеживать ветки: даже целые ветки не будут записываться как таковые, извините.
После начального клона запуск p4-git-xfer fetch
из реплики git будет выполнять инкрементное обновление. Список изменений с водяными знаками берется из marks/p4
в репо git. Это файл меток, который быстро импортирует нагрузки, поэтому, если вы делаете какие-либо причудливые работы, например, используя фильтр-ветвь для перезаписи, будьте осторожны, вам, возможно, придется это обновить.
Это некрасиво и имеет некоторые средние и серьезные проблемы; Я использую его в основном для собственного удобства, чтобы изолировать себя от проблем Perforce, а не как изо дня в день критически важной составляющей инфраструктуры. Это одностороннее: я обычно использую p4-am script для применения исправлений, созданных git format-patch
. Это само по себе работает только в основном с общей разборчивостью гадости, проблемами с концами конца строки, двоичными изменениями и т.д.