Как отменить отправленный ранее список изменений Perforce?

Я только что представил список изменений Perforce (p4), в который мне нужно внести небольшие изменения, чтобы исправить сборку. Как я могу отослать недавно отправленный список изменений p4?

2 ответа

С 2016 года новая команда p4 undo предоставляется, чтобы упростить отмену одного или нескольких списков изменений.

Например,

p4 undo @12345

Эта команда откроет в вашей рабочей области файлы, измененные в списке изменений 12345. Содержимое этих файлов будет содержать их предыдущие версии. После отправки открытых файлов эффекты списка изменений 12345 отменяются.

p4 undo также поддерживает диапазоны ревизий для отмены нескольких списков изменений одновременно.

Обратите внимание, что если файлы были изменены после предоставленного списка изменений, вам необходимо p4 sync а также p4 resolve файлы как обычно.

Смотрите здесь для получения дополнительной информации: https://www.perforce.com/perforce/doc.current/manuals/cmdref/Content/CmdRef/p4_undo.html

Вы можете использовать синхронизацию p4 и редактировать / разрешать / отправлять, чтобы отменить отправленный список изменений. Для подробных инструкций взгляните на: https://community.perforce.com/s/article/3474

Надеюсь, это поможет.

@Alan Wendt - Спасибо, это очень помогло.

Только одно дополнение - иногда файлы перемещаются, а не просто добавление / удаление, что приводит к немного другому суффиксу. Вот исправленный код, который также разрешал удаление и добавление как части операции MOVE:

# source: https://community.perforce.com/s/article/3474

prevcl=`expr $1 - 1`
echo previous $prevcl

p4 sync @$prevcl

# open all of the edited files
for name in `p4 describe -s $1 | egrep '#[0-9]+ edit$' | cut -f 1 -d# | colrm 1 4`
do
   echo "reverting edits to $name"
   p4 edit $name
done

# add all of the deleted files
for name in `p4 describe -s $1 | egrep '#[0-9]+ (move/)?delete$' | cut -f 1 -d# | colrm 1 4`
do
   echo "restoring deleted file $name"
   p4 add $name
done

p4 sync @$1
p4 resolve -ay
p4 sync
p4 resolve

# delete all of the added files
for name in `p4 describe -s $1 | egrep '#[0-9]+ (move/)?add$' | cut -f 1 -d# | colrm 1 4`
do
   echo "removing added file $name"
   p4 delete $name
done
# source: https://community.perforce.com/s/article/3474

prevcl=`expr $1 - 1`
echo previous $prevcl

p4 sync @$prevcl

# open all of the edited files
for name in `p4 describe -s $1 | egrep '#[0-9]+ edit$' | cut -f 1 -d# | colrm 1 4`
do
   echo "reverting edits to $name"
   p4 edit $name
done

# add all of the deleted files
for name in `p4 describe -s $1 | egrep '#[0-9]+ delete$' | cut -f 1 -d# | colrm 1 4`
do
   echo "restoring deleted file $name"
   p4 add $name
done

p4 sync @$1
p4 resolve -ay
p4 sync
p4 resolve

# delete all of the added files
for name in `p4 describe -s $1 | egrep '#[0-9]+ add$' | cut -f 1 -d# | colrm 1 4`
do
   echo "removing added file $name"
   p4 delete $name
done
Другие вопросы по тегам