Вопрос

У меня есть задача миграции моей команды и источника от Git для Perforce, и я ищу идеи о том, как переместить историю Git в P4.

Я был бы счастлив движущейся главной ветви только. Однако даже это доказывает проблематично.

Я использую замечательный инструмент Git-P4. Я создаю область назначения в моем рабочем пространстве P4 и использовать git p4 clone //depot/StuffFromGit Чтобы начать отслеживать его в Git-P4. Я передаю все изменения репозитория My Git в клон Git-P4. Я могу тогда git p4 submit И можно сделать, все изменения толщиваются на P4.

Работает отлично, когда история Git выглядит так, хорошая и линейная:

A---B---C---D

Проблема поставляется с несколькими людьми, работающими над проектом. Несмотря на то, что они работают над мастером, что все еще создает ветви, которые раскололись и сливаются. Тем не менее, Git-P4 смело обрабатывает это:

A---B---C---E
     \--D--/

Git P4 Traversees OK, совершая ABCDE в порядке (или ABDCE, в истории человека сначала).

Проблема наступает, когда, например, C и D оба изменяют один и тот же файл, и E является слиянием реальной честной к себе. git p4 rebase не удается здесь; Это будет перемотать коммиты, но во время воспроизведения он сначала будет применяться, а затем попытаться d и найти конфликт. Затем он остановится, прося меня слиться. Ну, E содержит слияние, но это спрашивает меня вручную! «GIT P4 отправка» не удастся аналогичным образом, только сейчас это P4, отвергающее превышение изменений.

Используя индексную информацию для реконструкции базового дерева ... Падение на патческую базу и трехстороннее слияние ... Автоматическое объединение CPP Конфликт (контент): Умеренный конфликт в Main.cpp не удалось объединить изменения. Патч не удался при 0005 изменяющихся основных

Так что теперь я застрял. Есть ли способ демонстрировать историю Git или получить Git-P4, чтобы понять это? Это разочаровывает, как там слияния.

Мысли, которые у меня были:

  • Используйте FIT-фильтр-ветвь для удаления всех упоминаний о конфликтующих файлах. Я бы получил комментарии истории, хотя пропуская многие изменения файлов. Примерно примерно в 3000 обмениваются в истории, я бы заводил все ключ (занятые) истории файлов. В конце отфильтрованных файлов импортируют, я бы добавил отсутствующие файлы обратно, выполнив окончательный коммит головы.
  • Сбросьте историю, сделайте один парик P4 головы (простой, но грустный).
  • Не перейти к P4: Я работал этой идеи как можно дольше.

Никто из которых действительно велик. Любые идеи о том, как Git 'GT P4 Rebase' или «GIT P4 отправить» на работу?

Это было полезно?

Решение

Возможность «просто выбрасывать старую историю» не так плохо, как это звучит: вы можете просто сохранить свой Git Repo вместе с ним навсегда, в случае, если кому-то должен копать старые вещи. К сожалению, просто нет способа представлять сложный взгляд Git о истории в линейных системах в старых стилях, таких как SVN и P4.

Основная причина оглядываться в старую историю, для вещей, таких как «Git Annotate» (я предполагаю, что P4 имеет аналогичный инструмент). Если это все, что вы хотите, то, возможно, то, что вы действительно хотите сделать, это сквош, все ваше слияние совершает только один из своих родителей (так что они похожи на единый коммит вместо слияния). Это больше похоже на то, что SVN и P4 были бы записаны в своей собственной модели истории, где сливаются, просто выглядят как один коммит в линейном потоке. Вы, вероятно, можете сделать это с Git-Filter-ветвью или тому подобным. Конечно, это потеряет всю историю, которая произошла на подразделениях ... но пользователи P4 используются для отсутствия этой информации.

Другие советы

Вы проверили инструмент «портной»? Это сборка для синхронизации разных VCS: ES. Он должен иметь перфорацию.

Как сбоку, моя первая реакция будет серьезно ставить в решение, но я думаю, вы уже сделали это.

Я думаю, что вы должны попробовать с черепахой SVN, а затем HG, учитывая единое обновление ветви или вы можете сказать миграцию. Убедитесь, что у вас есть вся дамп, клонированный, чтобы быть на безопасной стороне. Удачи !

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top