#perforce #perforce-integrate #perforce-stream
Вопрос:
Это непростой вопрос, поэтому я постараюсь объяснить его на упрощенном примере…
У нас есть 2 филиала (потенциально больше): main
и dev
. Разработка выполняется в dev
, si она получает несколько CLS. Время от времени мы полностью dev
интегрируемся main
: мы берем все внесенные изменения dev
и помещаем их main
в один полностью интегрированный CL.
dev main
│ │
W ├─────►│ A full integrate W
│ │
X ├─────►│ B full integrate X
│ │
Y │ │
│ │
Z ├─────►│ C full integrate Y and Z
│ │
Теперь я хочу знать, есть ли у меня Y
main
доступ к определенному Кл. Например:
- есть ли у меня
Y
вmain@A
: НЕТ - есть ли у меня
Y
вmain@B
: НЕТ - есть ли у меня
Y
вmain@C
: ДА
Мне нужна командная строка, которая даст мне этот результат. До сих пор я использую :
p4 integrate -n "//dev/...@Y,@Y" //main/...
Потому что он пытается интегрироваться Y
main
и говорит, нужно ли что-то делать или нет. Если нет, то у нас уже есть изменения, ничего не поделаешь.
Проблема в том, что с помощью этой команды , как только Y
она будет интегрирована main
, она всегда будет говорить, что она здесь, так как мы не можем предоставить CL для целевой ветви main
…
Ответ №1:
Используйте -C
флаг, чтобы p4 integrate
. -C
Флаг ограничивает рассматриваемые записи интеграции теми, которые
Например:
p4 integ -n -C B //dev/...@Y,Y //main/... # no
p4 integ -n -C C //dev/...@Y,Y //main/... # yes
Видеть p4 help undoc
:
p4 integrate -1 -2 -C changelist# -Rlou -Znnn
... The -C
changelist# flag considers only integration history from changelists
at or below the given number, allowing you to ignore credit from
subsequent integrations. ...
Комментарии:
1. Большое спасибо, я пропустил это в документе… Хотя, кажется, это хорошо работает для примера , который я показываю, но, похоже, это не работает для этой проверки:
p4 integrate -n -C Y //main/...@C,@C //dev/...
, где я хочу знать, есть ли уdev@Y
меня все CLS отmain@C
2. Странный крайний случай есть-учитывая то, что
Y < C
я ожидал, что команда должна сказать вам, не так как она должна быть фильтрация по Z -> Интеграция c, что даст обратный кредита, однако вы должны быть в состоянии просто взять его без выполнения команды, так как это, очевидно, не удается получить кредит на что-то, что еще не произошло. 🙂