Я придумал сценарий на основе вашего ответа Samwise. Этот сценарий отменяет и удаляет список изменений, если отправка завершается неудачно, поскольку ручное слияние должно выполняться другим пользователем в другой рабочей области за пределами CI
echo "**** Integrating"
p4 integrate //master/branch/... //dev/branch/...
echo "**** Safe Resolving"
p4 resolve -as
echo "**** Submitting"
touch output.txt
p4 submit -d "Nightly merge from Master to Dev Stream" 2>&1 | tee output.txt
echo "**** output.txt"
cat output.txt
RESULT=$(grep ".*Submit failed -- fix problems above then use.*" output.txt)
echo "**** Grep error RESULT: $RESULT"
if [ -n "$RESULT" ]; then
# example line
# [08:00:32][Step 1/1] Submit failed -- fix problems above then use 'p4 submit -c 27831'.
CL=$(grep ".*Submit failed.*p4 submit -c.*" output.txt | sed -n "s/^.*c \([0-9]*\)'\./\1/p")
echo "**** Changelist to revert and delete: $CL"
echo "**** Revert Changelist"
p4 revert -c "$CL" //...
echo "**** Delete Changelist"
p4 change -d "$CL"
exit 1
fi