В течение p4 copy
история интеграции в значительной степени (*) не имеет значения, потому что p4 copy
работает в основном на основе того, являются ли ревизии заголовка источника и цели идентичными. Это означает, что:
- Файлы без истории интеграции, которые оказались идентичными, не будут затронуты.
- Файлы с полной историей интеграции, которые не идентичны (например, файлы с указанием c изменения были "проигнорированы", чтобы разрешить контролируемое расхождение) будут скопированы.
Во время p4 copy
/ p4 submit
нормальная история интеграции создается для затронутых файлов .
Во время p4 merge
или p4 integrate
контент не имеет значения, потому что p4 merge
работает исключительно на основе истории интеграции. Это означает, что:
- Файлы без истории интеграции, которые совпадают, будут открыты для интеграции. Во время
p4 resolve
(когда содержимое фактически рассеяно и объединено), они будут автоматически разрешены как действия «копирования». - Файлы с полной историей интеграции, которые не идентичны (например, файлы, где указано * 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
открываются, просматривают историю интеграции, чтобы определить, как отобразить диапазон ревизий (начальная ревизия на самом деле не имеет значения для «копии» записи, но если вы не сгенерируете ту, которая » выглядит правильно: «люди будут спрашивать,« почему эти диапазоны перекрываются? », поэтому предпринимаются попытки создать иллюзию копии, возникшей в результате операции объединения, чтобы свести эти вопросы к минимуму).