git-p4 переносит "главную" ветвь в ветки git как подкаталоги (дублированный код в ветвях git)
Ситуация
Попытка перенести 1 "главную" и 2 ветки из перформса в git. После сопоставления веток в соответствии со спецификациями я попробовал типичную миграцию, которая привела к проблемам с дублированием каталога кода.
Эта проблема
При запуске "git p4" (либо клонирование, либо синхронизация) дубликаты главного кода ветви включаются в ветви, а код ветви находится в каталоге рядом с главным. Я ожидаю увидеть только код ветки в области размещения git.
Настроить
#Perforce Repo Structure
//depot/main/branches/MAINT_01
//depot/main/branches/MAINT_02
//depot/main/branches/mobile
# perforce branch maps
# note: mobile and MAINT_02 are branched (in perforce) from MAINT_01
MAINT_02 -> //depot/main/branches/MAINT_01/... //depot/main/branches/MAINT_02/...
mobile -> //depot/main/branches/MAINT_01/... //depot/main/branches/mobile/...
# Perforce info
Server version: P4D/LINUX26X86_64/2009.2/241896 (2010/04/10)
Client Spec: (need to exclude many branches here)
//depot/main/branches/... //buildmaster-scm01/...
-//depot/main/branches/BranchA/... //buildmaster-scm01/BranchA/...
-//depot/main/branches/BranchB/... //buildmaster-scm01/BranchB/...
-//depot/main/branches/tempBranch/... //buildmaster-scm01/tempBranch/...
-//depot/main/branches/Bar/... //buildmaster-scm01/Bar/...
-//depot/main/branches/Foo/... //buildmaster-scm01/Foo/...
-//depot/main/branches/Cheese/... //buildmaster-scm01/Cheese/...
# Git Info (Linux Box)
/git/buildmaster/git2 302 % git --version
git version 1.7.12.rc2
Попытка миграции
Вот как все прошло...
agvscm01.inq.com /git/buildmaster/git 225 % git init
Initialized empty Git repository in /git/buildmaster/git/.git/
agvscm01.inq.com /git/buildmaster/git 226 % git p4 sync --detect-branches --use-client-spec //depot/main/branches@all
Importing revision 20482 (88%)
Importing new branch branches/MAINT_01
Resuming with change 20482
Importing revision 21137 (96%)
Importing new branch branches/mobile
Resuming with change 21137
Importing revision 21396 (100%)
Updated branches: MAINT_01 MAINT_02 mobile
agvscm01.inq.com /git/buildmaster/git 227 % git checkout -b master p4/branches/MAINT_01
Checking out files: 100% (14923/14923), done.
Already on 'master'
agvscm01.inq.com /git/buildmaster/git 228 % git checkout -b rel_2 p4/branches/MAINT_02
Checking out files: 100% (15142/15142), done.
Switched to a new branch 'rel_2'
agvscm01.inq.com /git/buildmaster/git 229 % git checkout -b mobile p4/branches/mobile
Checking out files: 100% (29960/29960), done.
Switched to a new branch 'mobile'
agvscm01.inq.com /git/buildmaster/git 233 % git checkout master
Switched to branch 'master'
agvscm01.inq.com /git/buildmaster/git2 303 % git branch -a
* master
mobile
rel_2
remotes/p4/branches/MAINT_01
remotes/p4/branches/MAINT_02
remotes/p4/branches/mobile
Результаты
agvscm01.inq.com /git/buildmaster/git2 304 % git checkout mobile
Checking out files: 100% (15073/15073), done.
Switched to branch 'mobile'
agvscm01.inq.com /git/buildmaster/git2 305 % ls
MAINT_01 mobile
agvscm01.inq.com /git/buildmaster/git2 306 %
Обратите внимание, что каталоги MAINT_01 и mobile имеют всю правильную историю, но на этом уровне следует видеть только содержимое mobile.
ожидания
В филиале мобильной ветки не должно быть каталога MAINT_01. мобильный - это ветка MAINT_01. Это, наверное, что-то действительно простое, но я этого не вижу. Кроме того, проверка master просто включает MAINT_01 в качестве пользователя root. Содержимое MAINT_01 должно быть корнем ветви.
agvscm01.inq.com /git/buildmaster/git2_bak 307 % git checkout master
Switched to branch 'master'
agvscm01.inq.com /git/buildmaster/git2_bak 308 % ls
MAINT_01
agvscm01.inq.com /git/buildmaster/git2_bak 309 %
Цените любую помощь здесь.
1 ответ
В git по состоянию на 1.7.11 имеется подтвержденная ошибка в модуле git-p4, которая неправильно отображает код выполнения для git repo при одновременном использовании параметров --use-client-spec и --detect-branch. Фрагмент из электронного письма, когда я сообщил о проблеме команде разработчиков git...
Спасибо за подробный отчет. Это ошибка в 1.7.12-rc2. Эта серия исправляет это, поверх происхождения / мастера.
Суть в том, что файлы отображаются в неправильных местах в git, когда включены оба параметра --use-client-spec и --branch-Detection.
Пит Уайкофф (5):
- git p4 test: переместить функцию client_view() в библиотеку
- git p4 test: добавить испорченные тесты --use-client-spec --detect-branch
- git p4: установить self.branchPrefixes в инициализации
- git p4: сделать подстановочный знак в stripRepoPath
- git p4: заставить обнаружение веток работать с --use-client-spec
git-p4.py | 75 +++++++++++++++++++++++++++--------------
t/lib-git-p4.sh | 18 ++++++++++
t/t9801-git-p4-branch.sh | 77 +++++++++++++++++++++++++++++++++++++++++++
t/t9809-git-p4-client-view.sh | 17 ----------
4 files changed, 146 insertions(+), 41 deletions(-)
В настоящее время они опубликовали 1.7.12rc2. В ожидании исправленной версии