удалить отправленный список изменений из истории по необходимости

Я случайно отправил неправильный список изменений на свой сервер perforce. Затем я отказался от этого списка изменений, используя опцию «Отменить список изменений». Но эти два изменения появляются в истории всех затронутых файлов, которые когда-то были удалены, а затем добавлены снова.

Я хочу иметь возможность удалить историю этих двух списков изменений с сервера perforce. Является ли это возможным. Можно ли это сделать с помощью какой-нибудь административной команды Perforce.

РЕДАКТИРОВАТЬ: Я видел p4 change -d -f, который может удалить список изменений, но для этого требуется использовать p4 уничтожение файлов, которые были в списке изменений. Означает ли это, что мне нужно стереть все файлы, на которые повлиял список изменений. Это не кажется мне жизнеспособным решением, поскольку я не хочу удалять эти файлы. Должен ли я удалить только эти две версии файлов из-за двух представленных списков изменений?


person Neal    schedule 23.10.2012    source источник


Ответы (1)


Ваш персональный администратор может вызвать p4 obliterate, чтобы полностью стереть файлы, версии и историю. Но я настоятельно не рекомендую этого делать. Совершенно нормально откатить файлы / изменения и просмотреть их историю.

В случае, если вы все же решите использовать p4 obliterate, убедитесь, что вы вызываете его без опции «-y» сначала (предварительный просмотр), а затем (если вывод того, что perforce говорит, что произойдет, в порядке) вызовите ту же команду с опцией «-y» (чтобы фактически выполнить уничтожение).

Если вы вызываете p4 obliterate с ревизией файла (например, p4 obliterate //depot/dir/file#5), то будут удалены только изменения и история этой ревизии, а все предыдущие ревизии и история останутся нетронутыми. Вы также можете стереть диапазон ревизий.

person pitseeker    schedule 23.10.2012
comment
на самом деле этот ошибочный список изменений затронул почти каждый файл, поэтому история была повреждена почти для всех файлов. Именно поэтому я не хочу, чтобы откат появлялся. Должен ли я вызывать p4 стирать для всех ревизий затронутых файлов или только этих двух конкретных ревизий (из-за этих двух оскорбительных списков изменений) - person Neal; 23.10.2012
comment
IMHO никакой откат не оправдывает вызов p4 Obliterate. Это совершенно нормально. Если вы все еще думаете, что он вам нужен, вы должны вызвать p4 уничтожить файл # rev для всех файлов в списке изменений. Добавьте параметр -y, чтобы действительно это сделать (если вы не укажете -y, это просто запустит тест). - person pitseeker; 23.10.2012
comment
Спасибо большое за вашу помощь. Я понимаю, что это может показаться нелогичным, но я все же хочу это сделать. Итак, мне просто нужно стереть ревизию файла, которая была введена из-за ошибочного списка изменений, а не стереть весь файл? Я правильно понимаю? Я прошу это просто для подтверждения. - person Neal; 23.10.2012
comment
да. p4 Obliterate -y // depot / dir / file # 5 просто уничтожит ревизию 5 файла (оставив ревизии 1-4). История № 5 исчезнет (включая список изменений, в котором она была представлена). Вы должны запустить команду без -y для тестового запуска! Убедитесь, что №6 не существует (ревизии новее, чем та, которую вы хотите удалить). Команда Obliterate может немного заблокировать ваш сервер (т.е. отправка может занять больше времени). - person pitseeker; 23.10.2012
comment
благодаря. Я принял твой ответ. Пожалуйста, отредактируйте его, чтобы включить информацию, представленную в комментариях. - person Neal; 23.10.2012
comment
@pitseeker Я хочу стереть список изменений, в котором было проверено много файлов, а в файлах нет реальных изменений. Кажется, я не могу найти его синтаксис. Как я могу стереть список изменений? Спасибо. - person zar; 17.01.2013
comment
@pitseeker Я не могу ввести все имена файлов, которые нужно стереть. Могу ли я сделать это только через список изменений? - person zar; 17.01.2013
comment
@zadane: Для уничтожения применяются те же средства для указания ревизий или диапазонов ревизий, что и для всех других команд. См. Исправления в справке p4. Но поскольку уничтожение - такая опасная команда, я всегда делаю ее одну за другой (на самом деле вы можете сделать это с помощью простого скрипта). - person pitseeker; 18.01.2013
comment
@pitseeker, ты сказал: Убедитесь, что №6 не существует. Это почему? Будет ли синхронизация с №6 завершиться неудачей, если я уничтожу №5? - person Himanshu; 06.09.2013
comment
@Himanshu: хороший вопрос. Мне просто показалось странным стирать старые ревизии и оставлять головную ревизию нетронутой. Тогда вы получите пробел в истории. Однако я не знаю, позволяет ли это perforce. В любом случае я предполагаю, что perforce продолжит работать стабильно (с промежутком или без него). - person pitseeker; 06.09.2013
comment
Спасибо @pitseeker. Я боялся, что более поздние изменения не появятся, потому что предыдущая исчезла. Если Perforce работает стабильно, я, возможно, в безопасности. - person Himanshu; 06.09.2013
comment
Я до сих пор не вижу четкого ответа, как удалить неправильную фиксацию в p4. У меня есть ветка, я сделал случайную фиксацию, затем попытался откатиться, откатиться и т. Д. Все это только усугубило ситуацию. Все, что я хочу, - это полностью удалить последние 5 коммитов для всей моей ветки, именно то, что сделал бы git hard reset. Вместо этого все, что я читаю, - это многочисленные предложения о том, что весь этот беспорядок - это нормально. Вопрос был не в этом - person Pavel P; 02.10.2017