Исполняет ли трек дельты, уникальные для набора изменений, или он просто хранит весь файл? - PullRequest
2 голосов
/ 25 ноября 2010

Я попытался объединить некоторую работу, которую разработчик сделал в рабочей ветке, с стабильной веткой. Файлы a, b и c были изменены, по крайней мере, дюжиной наборов изменений, так как общий предок ветвей STABLE и HEAD был разделен.

Я ожидал, что, поскольку этот разработчик изменил пять строк в каждом из файлов a, b и c, что при интеграции из HEAD в ветку STABLE я получу его изменения в моем ожидающем наборе изменений, который я затем смогу просмотреть и зафиксируй.

Вместо этого, похоже, что он принял все изменения, произошедшие с файлом A, поскольку эти два были разветвлены, и применил все те изменения, которые также существовали в рабочей копии моего коллеги.

Другими словами, в наборе изменений, похоже, нет записи о том, что на самом деле изменил мой коллега, по сравнению с тем, что ранее содержалось в файле.

Если я просматриваю представленные наборы изменений, я вижу разницу между версией файла моего коллеги и непосредственно предшествующей версией. Но тогда, похоже, это не определяет, что входит в слияние.

Не означает ли набор изменений "набор изменений, внесенных между версией X и версией X + 1 файла"? Кто-нибудь может мне помочь понять, что значит «интегрировать набор изменений», когда на самом деле кажется, что Perforce не отслеживает изменения, а отслеживает файлы.

Вполне возможно, что я все делаю неправильно, и буду признателен за любой указатель на то, как вы можете точно и безопасно объединить рабочие ветки Perforce и стабильные ветки, без вещей, которые вы не хотите получать интегрируется в стабильную ветвь интегрируется. Кажется, что независимо от того, насколько просты изменения, внесенные в продукт, слияние на самом деле не работает.

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Perforce делает сохранение изменений в текстовых файлах в виде дельт (двоичные файлы сохраняются полностью при каждой отправке изменения). Похоже, вы не правильно ограничиваете диапазон ревизий во время интеграции.

Вы говорите, что рабочая ветвь "... была изменена, по крайней мере, дюжиной наборов изменений, так как ... ветви были разделены". Давайте назовем их списками изменений 1-12. Если я вас правильно понимаю, вы пытаетесь объединить изменения, внесенные только в один из этих списков изменений, а не во все.

Во время простой операции интеграции Perforce предполагает, что вы хотите интегрировать все изменения, которые были отправлены с момента создания ветви. Если вы хотите только подмножество этих изменений, вы должны указать диапазон редакций. Таким образом, если вы просто хотите интегрировать изменения, которые произошли между списками изменений 11 и 12, вы должны указать диапазон изменений, как показано на снимке экрана. (Примечание: диапазон ревизий является включающим, поэтому указание диапазона 11-12, как я делаю на этом снимке экрана, фактически будет включать изменения в списках изменений 11 и 12. Если вы просто хотите интегрировать сделанные изменения в списке изменений 12 введите 12 в оба поля диапазона редакций.)

Просто имейте в виду, что возникающие конфликты могут быть трудно разрешаемыми, в зависимости от того, насколько далеко разошлись ветви, и характера изменений.

alt text

0 голосов
/ 25 ноября 2010

Не могли бы вы более подробно рассказать о том, как вы делали интеграцию?Я предполагаю, что вы, вероятно, интегрировали все изменения в этот список изменений, а не только в этот список изменений.Если это так, все, что вам нужно сделать, это указать тот же список изменений, что и верхний и нижний пределы интеграции.

Это очень легко сделать в визуальном клиенте, но я не уверен, какой именно ключ командной строки вам нужен.

...