Во время «p4 copy» обновляет историю интеграции - PullRequest
0 голосов
/ 06 января 2020

Постановка проблемы: есть две ветви P4 MAIN и DEV. Их текущая история интеграции не известна. Если мы сделаем «p4 copy» из MAIN -> DEV, вся предыдущая история интеграции станет неактуальной. Поэтому, когда мы выполняем «p4 интегрирование» в любом направлении, должно быть 0 интегрирований. Является ли это предположение правильным?

На практике, когда я пытался это сделать, предварительный просмотр слияния / интеграции P4 показывал ожидающие интеграции после того, как я сделал копию P4 из MAIN -> DEV. Это не имело смысла для меня.

Пожалуйста, кто-нибудь может уточнить это?

Спасибо. Павел В.

1 Ответ

0 голосов
/ 06 января 2020

В течение p4 copy история интеграции в значительной степени (*) не имеет значения, потому что p4 copy работает в основном на основе того, являются ли ревизии заголовка источника и цели идентичными. Это означает, что:

  1. Файлы без истории интеграции, которые оказались идентичными, не будут затронуты.
  2. Файлы с полной историей интеграции, которые не идентичны (например, файлы с указанием c изменения были "проигнорированы", чтобы разрешить контролируемое расхождение) будут скопированы.

Во время p4 copy / p4 submit нормальная история интеграции создается для затронутых файлов .


Во время p4 merge или p4 integrate контент не имеет значения, потому что p4 merge работает исключительно на основе истории интеграции. Это означает, что:

  1. Файлы без истории интеграции, которые совпадают, будут открыты для интеграции. Во время p4 resolve (когда содержимое фактически рассеяно и объединено), они будут автоматически разрешены как действия «копирования».
  2. Файлы с полной историей интеграции, которые не идентичны (например, файлы, где указано * 1048) * изменения были «проигнорированы», чтобы разрешить контролируемое расхождение) не будут открыты для интеграции.

Обратите внимание, что в случае (1) файл будет пропущен по copy, и затем впоследствии открыт для разрешения по merge. На практике это, как правило, не является неудобством, поскольку идентичные файлы всегда тривиальны для resolve.

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

% p4 help copy

    copy -- Copy one set of files to another

    p4 copy [options] fromFile[rev] toFile
    p4 copy [options] -b branch [-r] [toFile[rev] ...]
    p4 copy [options] -b branch -s fromFile[rev] [toFile ...]
    p4 copy [options] -S stream [-P parent] [-F] [-r] [toFile[rev] ...]

        options: -c changelist# -f -n -v -m max -q

        'p4 copy' copies one set of files (the 'source') into another (the
        'target').

        ...

        The -f flag forces the creation of extra revisions in order to
        explicitly record that files have been copied.  Deleted source files
        will be copied if they do not exist in the target, and files that are
        already identical will be copied if they are not connected by existing
        integration records.

(*) Примечательные исключения: описанное выше поведение -f и некоторые крайние случаи вокруг +k (с расширением ключевых слов) файлов, в которых "ложный" различия в содержании компенсируются путем беглого изучения записей интеграции, чтобы установить sh, что редакции семантически идентичны. Кроме того, для файлов, которые copy открываются, просматривают историю интеграции, чтобы определить, как отобразить диапазон ревизий (начальная ревизия на самом деле не имеет значения для «копии» записи, но если вы не сгенерируете ту, которая » выглядит правильно: «люди будут спрашивать,« почему эти диапазоны перекрываются? », поэтому предпринимаются попытки создать иллюзию копии, возникшей в результате операции объединения, чтобы свести эти вопросы к минимуму).

...