Perforce - удаление дельты для заданного диапазона списка изменений - PullRequest
0 голосов
/ 01 ноября 2011

У меня небольшой вопрос с большим фоном. Позвольте мне попросить короткую версию, а затем немного ее расширить.

Краткая версия моего вопроса выглядит следующим образом.

Представьте себе ситуацию - у вас есть ветвь A с списками изменений от 1000 до 1004. Затем вы создаете ветку B из списка изменений 1004 и добавляете еще пару ревизий (1005, 1006). После этого вам нужно удалить дельту, представленную списком изменений 1002 из ветви B. Как я могу это сделать? Если мне нужно это на ветке А - нет проблем, просто откат на 1001 и реинтеграция 1003-1004. Но мне нужно удалить дельту, которая была представлена ​​списком изменений в ветке, у которой нет этого списка изменений в его истории. Итак, как я могу сделать это "выборочное удаление"?

Лирический фон моего вопроса следующий. В старые времена, когда я был инженером ClearCase, я иногда использовал функцию под названием «вычитающее слияние». Я вызвал команду «объединить», указал две версии, чтобы определить дельту, и флаг, который сказал что-то вроде «удалить» (это было несколько лет назад, я забыл точный флаг). Что он сделал, так это то, что он удалил указанную дельту независимо от того, когда эта дельта была фактически введена - 1 коммит или год назад. Так что это вычитающее слияние, которое может быть использовано в качестве отката без удаления каких-либо версий, вроде как «вырезать» некоторую дельту.

Теперь я использую Perforce и вижу команду «Откат», которая позволяет создать список изменений, который удаляет дельту из «сейчас» обратно в список изменений, который я указываю. Именно так советует база знаний Perforce, когда вам нужно удалить дельту. И если вам нужно удалить диапазон списков изменений, вам необходимо откатить весь стек этих списков изменений из «сейчас» обратно в предыдущий список изменений, а затем интегрировать обратно все, кроме списка изменений, который вы хотели выбросить. Итак - удалите N списков изменений, а затем интегрируйте обратно N-1 список изменений. Я не знаю ... Это выглядит как накладные расходы для меня.

Итак, я спрашиваю опыт пользователей Perforce, знаете ли вы, как выполнить «вычитающую интеграцию» в Perforce?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 01 ноября 2011

Реинтегрируйте 1001 (используя флаг -i, чтобы игнорировать предыдущую историю интеграции) в ветвь B и возьмите все изменения из 1001, создав 1007 список изменений в ветке B. Затем реинтегрируйте 1005 и 1006 поверх этого. Если 1005 и 1006 не коснутся некоторых изменений в 1002-1004, вам, возможно, придется быть более избирательным.

1 голос
/ 08 ноября 2011

Похоже, я пропустил ключевую функцию Perforce, которая была у меня на глазах ... "Back Out Submitted Changelist #####" делает правильную вещь.См. В чем разница между "Откат ..." и "Отменить отправленный список изменений #####" в Perforce P4V

0 голосов
/ 01 ноября 2011

Если бы я делал это, я бы сделал ветвь C на основе ветви A в списке изменений 1001. Затем я бы вытянул необходимую дополнительную работу из ветвей A и B в C, без, конечно, вытягивания списка изменений 1002 изA.

...