Mercurial: обновить до ревизии, но не изменять локальные файлы

Предположим, в репозитории 20 ревизий. Текущая ревизия в записи - это ревизия 10 , а фактические локальные файлы основаны на последней ревизии 20 . От ревизии 10 ветвиться не хочу. Я хочу продолжить ревизию 20 .

В настоящее время я копирую все файлы из каталога ревизии, запускаю hg update -C (который обновляет номер ревизии), удалите все файлы в каталоге репозитория, скопируйте все файлы обратно и зафиксируйте. Вы можете сказать, что это раздражает и тратит время. Есть ли способ только обновить номер версии, но не изменить какой-либо локальный файл?

Заранее спасибо.

РЕДАКТИРОВАТЬ : существует множество вариантов использования (в основном я использую TortoiseHg).

1) Я по ошибке выбираю «Нет», когда мне предлагается удалить файлы из репозитория во время фиксации. Я могу использовать полосу из mq, чтобы удалить ревизию, но это вернет все зафиксированные файлы. Вместо этого я хочу «переродить» предыдущую ревизию, снова зафиксировать, а затем удалить ненужную ревизию. Это может случиться с кем угодно в любое время, не только со мной, и не один раз.

2) У меня была машина для разработки A. Я начал проект на ней и переключился на машину B через несколько месяцев. Код на A стареет, и код на B изменился без промедления. Если я хочу продолжить разработку на A, мне нужно скопировать код в A через Flash или сеть и т. Д. Теперь я хочу зафиксировать A без ветвления (потому что код на A фактически основан на текущем совете). Это случается, может быть, реже, но все же не «однократная» проблема, и более вероятно, когда вы участвуете в большом проекте.

3) Репозиторий имеет 2 ветки C и D. Всего около 2000 файлов. Текущий совет находится в C. Я хочу перезаписать некоторые файлы в D файлами с тем же именем в C (потому что C более реализован), сохранив другие файлы без изменений, а затем сделать новый совет в D. У меня есть несколько вариантов. Я мог обновиться до D, сравнить последнюю версию D с текущим советом, внести изменения и зафиксировать. Обновление займет некоторое время, а сложность сравнения во многом зависит от инструмента сравнения. Я также мог сначала сравнить, внести изменения, сделать резервную копию всего каталога, обновить до D, а затем восстановить весь каталог. Это еще более громоздко. Но если бы я мог «переродиться» к D, мне просто нужно было бы внести изменения и зафиксировать. Это не полагается на инструмент сравнения, потому что в окне фиксации в TortoiseHg есть список различий.

Если вы хотите подумать, может быть больше вариантов использования. Я надеюсь, что Mercurial предоставляет такую ​​функцию "повторного родителя" (предположительно, новый вариант для hg update) или, по крайней мере, удобную альтернативу.

15
задан Crend King 15 December 2010 в 03:32
поделиться