Волей-неволей: восстановить поврежденную историю

#perforce #history

#волей-неволей #история

Вопрос:

У меня есть набор файлов, которые кто-то намеревался интегрировать, но случайно просто «добавил», из-за чего вся история была потеряна.

К сожалению, это произошло давным-давно, поэтому такие вещи, как просмотр по времени и история, заканчиваются на этой копии.

Есть ли способ исправить эту ошибку? Могу ли я каким-то образом сообщить волей-неволей «это изменение на самом деле было интегрировано из этого файла в этот список изменений»?

Ответ №1:

Единственный способ сделать это задним числом — взломать контрольную точку — вам нужно будет синтезировать «добавить из» db.integed записей.

https://www.perforce.com/perforce/doc.current/schema/#db.integed

При взломе контрольных точек это относительно просто, поскольку вам нужно добавить только в одну таблицу (можно повесить «добавить из» записей на существующую версию «добавить»), но вам нужно быть достаточно уверенным в p4d -j* командах Perforce и модели данных Perforce. Обратите внимание, что для обеспечения согласованности вам нужны как записи «добавить из», так и «добавить в» (причем одна является обратной по отношению к другой).

Самый простой способ ознакомиться с тем, как это работает, если вы совершенно новичок в этом, — запустить тестовый сервер, создать запись «добавить из», выполнив:

 echo asdf > foo
p4 add foo
p4 submit -d "add"
p4 integ foo bar
p4 add bar
p4 submit -d "add from"
  

затем возьмите контрольную точку ( p4d -jc ) и посмотрите на файл контрольной точки, в частности, на взаимосвязи между db.rev и db.integed . Все это довольно просто, и вы можете применить ту же логику для синтеза db.integed записей для добавленных вами файлов в вашем реальном хранилище (а затем использовать p4d -jr для применения вашего взломанного журнала к реальной базе данных).