Есть ли простой способ вернуть весь список изменений P4? - PullRequest
13 голосов
/ 01 декабря 2008

Допустим, я зарегистрировал список изменений (в Perforce) с большим количеством файлов, и я хотел бы вернуть весь список изменений. Есть ли простой способ «вернуть» весь список изменений одним махом?

В настоящее время я делаю что-то подобное для каждого файла в списке изменений:

  • p4 sync // path / to / file # n (где «n» - предыдущая версия файла)
  • cp file file # n
  • p4 sync // путь / к / файлу
  • p4 edit / path / to / file
  • cp file # n file
  • файл rm # n

Как вы можете себе представить, это довольно громоздко для большого списка изменений.

Ответы [ 6 ]

10 голосов
/ 02 декабря 2008

Опубликованные ответы дают правильные ответы, но учтите также, что в P4V есть актуальная опция меню, чтобы сделать это для вас сейчас. Это последняя бета-версия 2008.2, и поэтому она должна быть официально выпущена на следующей или три недели.

Эта ссылка содержит подробности.

Это должно быть намного проще, чем предыдущие ответы, но у меня еще не было возможности попробовать это сам.

Обновление Это было полностью выпущено. См. Выполните загрузки .

3 голосов
/ 01 декабря 2008

Это выглядит интересно. Я не пробовал это лично.

1 голос
/ 19 ноября 2014

Почему-то у меня не работает шаг awk. Я бегу из среды Windows с эмулированными инструментами командной строки Unix. Тем не менее, следующее работает:

p4 describe -s [changelist_number] | grep // | sed "s/\.\.\. //" | sed "s/#.*//"  | p4 -ztag -x - where | grep "... path " | sed "s/\.\.\. path //"

Вот возможные места для получения инструментов командной строки Unix в среде Windows:

http://sourceforge.net/projects/getgnuwin32/?source=typ_redirect http://unxutils.sourceforge.net/

1 голос
/ 02 декабря 2008

Официальный ответ от Perforce: http://kb.perforce.com/UserTasks/ManagingFile..Changelists/RevertingSub..Changelists, но процедура не намного проще, чем предлагаемая вами. Сценарий, предложенный @ ya23, выглядит лучше.

0 голосов
/ 10 апреля 2014

Проблема начинается, когда вы хотите вернуть весь список изменений (как массив), который вы только что отправили, и вам нужно быстро начать возвращать файлы с # n-1 по очереди (потому что это производство) ...

Хотел поддержать ответ ya23 - ссылку на скрипт Python - его действительно очень легко использовать (и очень легко пропустить его комментарий)

Вы даете ему ревизию, которую хотите откатить, и она готовит все автоматически (# n-1 каждого файла, объединение и все) ... вы просто отправляете.

0 голосов
/ 03 марта 2014

У меня та же проблема, когда я хочу удалить весь список изменений. поэтому я использую следующий скрипт (обратите внимание, что он также удаляет полку списка изменений и сам список изменений. если вы хотите только отменить, скопируйте соответствующие строки). Также убедитесь, что sed применяется к вашей версии p4.

#!/bin/bash

set -e

if [[ $# -ne 1 ]]; then
echo "usage: $(basename $0) changelist"
    exit 1
fi

CHANGELIST=$1

#make sure changelist exist.
p4 describe -s $CHANGELIST > /dev/null # set -e will exit automatically if fails

p4 shelve -d -c $CHANGELIST 2> /dev/null || true # changelist can be shelveless
files_to_revert=$(p4 opened 2> /dev/null | grep "change $CHANGELIST" | sed "s/#.*//g")
if [[ -n "$files_to_revert" ]]; then
    p4 revert $files_to_revert
fi
p4 change -d $CHANGELIST
...