Perforce: как применить более позднюю фиксацию к рабочей области, синхронизированной с более ранней версией? - PullRequest
2 голосов
/ 29 мая 2020

У меня есть рабочее пространство, синхронизированное со списком изменений A.

Мне нужно протестировать версию A со списком изменений D, который был зафиксирован несколькими коммитами после A в той же ветке. Вишня, так сказать.

Как мне это сделать, кроме p4 diff -du и применения патча?

1 Ответ

2 голосов
/ 29 мая 2020

Если вы довольны тем, что просто получаете файлы в D (в их версии @D), оставляя все остальное синхронизированным с A, это просто:

p4 sync @D,@D

Но если некоторые файлы в На D также повлияли изменения B и C, это может быть неприемлемо, так как версии D также будут содержать эти изменения. Для истинного выбора вишни вам нужно открыть файлы, чтобы вы могли выполнить набор разрешений, которые игнорируют B и C перед выбором вишни D. Мой подход к этому был бы следующим:

p4 -F "%depotFile%" files @D,@D | p4 -x - edit
p4 -F "%depotFile%@<D" files @D,@D | p4 -x - sync
p4 resolve -ay
p4 sync @D,@D
p4 resolve -am

Если есть конфликты слияния, вам нужно будет следить за этим с помощью интерактивного p4 resolve.

Обратите внимание, что если вы действительно отправите эти файлы, вы откатите B и C (по крайней мере, в пределах те указанные файлы c).

Если B и C не повлияли на файлы в D (т.е. файлы, возвращенные p4 files @D,@D), то шаги 2 и 3 не будут выполняться - - syn c to @<D просто оставит файлы в их текущих синхронизированных ревизиях (@A), и нечего будет разрешать / игнорировать. Решение на шаге 5 затем автоматически c «принимает их» (т.е. «копирует из» D), поскольку между A и D нет «игнорируемой» базовой версии.

Другой возможный вариант: чтобы сделать это в новой ветке (которую не обязательно отправлять в любой момент):

p4 integ original_branch/...@A cherry_pick/...
p4 integ original_branch/...@D,@D cherry_pick/...
p4 resolve -am

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

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