P4: я сделал ошибку, переименовав файлы и потеряв их историю. Как я могу это исправить?

Меня попросили изменить расширение файла на другое, например:

file.a -> file.b

То, что я сделал (неправильно), было что-то вроде:

  cp file.a file.b
  p4 add file.b
  p4 delete file.a

А потом подали в мою ветку. Дело в том, что моя команда хочет сохранить историю file.a в file.b. Я не знал о движении p4 до сих пор, поэтому я облажался.

Если я откатлю свои изменения и выполню p4-перемещение файла.a file.b, в его истории все еще будет "проблема удаления", когда я интегрируюсь в основную ветку, верно?

Есть ли способ восстановить первый файл.a из основной ветки и заменить на него файл.b? (а затем сделать ход p4)

Большое спасибо, ребята.

PS: я новичок в использовании p4

1 ответ

Решение

Для примера я предполагаю, что file.a#4 был последним оборотом перед тем, как его удалили. Я также предполагаю, что вы используете довольно свежую версию p4d...

Сначала отмените предыдущее изменение.

p4 sync file.a#4
p4 add file.a
p4 delete file.b
p4 submit -d "undo previous change"

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

Теперь, когда file.a вернулся (и все еще подключен к главной ветви через историю интеграции), а file.b удален, вы можете "переместить" file.a в file.b без каких-либо препятствий:

p4 edit file.a
p4 move file.a file.b
p4 submit -d "moving .a to .b"

Теперь, когда вы интегрируетесь обратно в основную ветвь и запустите "p4 resol", то такое же "перемещение" произойдет на основной линии, и если в file.a на основной линии произойдут другие изменения, они будут объединены с вашим файлом. b переименуйте (а не то, с чем вы, вероятно, сталкивались ранее, так как файл.a удалялся в конфликте с другими изменениями, в то время как ваш "новый" файл.b просто хотел разветвиться как независимый файл).

Другие вопросы по тегам