Perforce: восстановить сломанную историю

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

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

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


1
71
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 для применения взломанного журнала к фактической базе данных).