В чем разница между «откатом…» и «возвратом отправленного списка изменений #####» в Perforce P4V

198

Я хочу отменить изменения от одного из моих чеков. В контекстном меню правого клика конкретного списка изменений есть следующие два параметра:

  • Откат ...
  • Отменить отправленный список изменений

В чем разница между этими двумя? В каких ситуациях я должен использовать любой из них?

Дейв Андерсен
источник
3
В этом случае «Back Out Submitted Changelist» был правильным вариантом для моей ситуации (только желая отменить изменения от регистрации). Спасибо за отличные ответы.
Дейв Андерсен

Ответы:

222

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

В случае «Откат ...» это может быть любое количество файлов, даже целое хранилище. Вы можете сказать ему, чтобы откат к определенной ревизии, списку изменений или метке. Файлы восстанавливаются до состояния, в котором они находились во время создания этой ревизии, списка изменений или метки.

В случае «Отменить отправленный список изменений #####» операция восстановления ограничена файлами, которые были отправлены в список изменений #####. Эти файлы будут восстановлены до того состояния, в котором они находились до отправки вами списка изменений, при условии, что с тех пор в эти файлы не было внесено никаких изменений. Если последующие изменения были внесены в любой из этих файлов, Perforce сообщит вам, что эти файлы устарели. Вам придется синхронизироваться с ревизией головы, а затем устранить различия. Таким образом, вы не будете случайно изменять любые изменения, которые хотите сохранить.

Обе операции работают, по сути, представляя старые ревизии как новые ревизии. Выполняя «Откат ...», вы восстанавливаете файлы в состояние, в котором они находились в определенный момент времени , независимо от того, что с ними произошло с тех пор. Когда вы выполняете «Back out ...», вы пытаетесь отменить изменения, внесенные вами в определенный момент времени , сохраняя при этом те изменения, которые произошли с тех пор.

вороной
источник
18
Я думаю, "Back Out Submitted Changelist #####" будет пытаться сохранить изменения, которые были внесены в те же файлы после данного списка изменений.
Ян Рингроз
1
@Ian: Хорошее наблюдение. Когда я писал это, я думал о том, чтобы немедленно исправить ошибку. Как обычно бывает, если вы понимаете, что хотите отменить что-то намного позже , это становится более сложным. Я уточнил свой ответ.
ворон
@IanRingrose Я только что выполнил операцию «backout», и похоже, что она не пытается сохранить изменения, которые были сделаны позже. Мне нужно было выполнить синхронизацию, а затем решить, чтобы вернуть изменения, которые были отправлены после возврата.
gdw2
@ gdw2, я думаю, что если бы вы сделали «Откат», то у вас не было бы возможности «разрешить, чтобы вернуть изменения, которые были представлены после ...»
Ян Рингроз
1
Хотя файлы восстановлены до того состояния, в котором они находились, метаданные - нет. Попытка откатить интеграцию из другой ветви не позволит вам выполнить эту интеграцию снова, потому что метаданные говорят, что она уже интегрирована.
Уилл Брод
17

Отменить отправку списка изменений

Вы не можете отменить успешную отправку списка изменений, но вы можете отменить ранее отправленные изменения двумя способами:

Откат восстанавливает файл или набор файлов обратно в указанный список изменений, дату или ревизию. Любые изменения, сделанные после этого момента, не сохраняются. Отмена удаляет определенные изменения, внесенные в данный список изменений, дату или ревизию, но позволяет пользователю сохранять изменения, внесенные в последующие ревизии.

Для получения подробной информации, пожалуйста, обратитесь к https://www.perforce.com/perforce/r13.1/manuals/p4v/Working_with_changelists.html

Smartmarkey
источник
8

Backout восстанавливает или отменяет наши изменения. Таким образом, P4 отменяет изменения в списке изменений (по умолчанию или новые) в нашей локальной рабочей области. Затем мы должны отправить / зафиксировать этот резервный список изменений, как и другие списки изменений. Здесь важна вторая часть, поскольку она не выполняет автоматическое резервное копирование списка изменений на сервере, мы должны представить резервный список изменений (что имеет смысл после того, как вы это сделаете, но я изначально предполагал, что это происходит автоматически).

Как отмечали другие, откат обладает большими возможностями - он может восстанавливать изменения к определенной дате, списку изменений или ревизии #

user841717
источник
4

Откат ... предложит вам выбрать папку для отката, т. Е. Она будет работать с определенными папками, и вы можете откатиться до меток, списков изменений или дат. Отмена работы с файлами в определенных списках изменений.

АКФ
источник
4

Я объясняю это пользователям, сравнивая списки изменений Perforce со стеком (из структур данных).

Отмена удаляет один элемент из любой точки стека.

Откат удаляет n элементов с вершины стека.

gmaghera
источник
0

В самом простом случае разница состоит в множественности:

  • Отказаться от одного списка изменений (будь то самые последние или нет). то есть он отменяет один список изменений.
  • Откат откатывает изменения настолько, насколько это необходимо для перехода к предыдущему списку изменений. то есть он отменяет несколько списков изменений.

Раньше я забывал, что есть что, и в конечном итоге приходилось искать его много раз. Чтобы решить эту проблему, представьте, что откат выполняется как несколько оборотов, и, надеюсь, тот факт, что откат множественного числа, поможет вам (и мне!) Вспомнить, какой из них есть какой. Отказ звучит «менее множественно», чем откат для меня. Представьте себе, что вы выходите из единственного места для парковки.

Итак, мнемоника это:

  • Откат → несколько оборотов
  • Backout → назад из одного места для парковки автомобиля

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

darrenp
источник