Как удалить наборы изменений из истории изменений репозитория MQ?

У меня есть репозиторий Mercurial. У него есть очередь исправлений (которая сама по себе является репозиторием, содержащим исправления). К сожалению, я сделал слишком много неприглядных коммитов в MQ (с командой hg commit --mq). Если я запущу команду hg history --mq, она напечатает кучу ненужных наборов изменений, скажем, A, B, B1, B2, B3, B4, C, D. Я просто хочу избавиться от этих B1, B2, B3 и B4, но я не хочу удалять последние C и D. Только эти промежуточные наборы изменений. Как мне добиться желаемого?


person Isroel Barenboim    schedule 03.01.2016    source источник
comment
Мне интересно, почему вы хотите? Как только ваши исправления будут правильными, не могли бы вы qfinish их фиксировать в основном репозитории? Никто, кроме вас, не увидит историю очереди исправлений.   -  person Mark Tolonen    schedule 05.01.2016
comment
Вам придется отредактировать историю очереди исправлений, используя очередь исправлений для очереди исправлений... это сбивает с толку. qimport историю, которую вы не хотите, и используйте qdel или qfold, чтобы удалить или сжать историю.   -  person Mark Tolonen    schedule 05.01.2016


Ответы (1)


Предполагая, что между последующими наборами изменений mq нет конфликтов, все довольно просто.

Способ mq заключается в использовании hg qdelete PATCH-ID с исправлениями, которые вы хотите удалить. Обязательно, чтобы патчи НЕ применялись.

В качестве альтернативы вы можете использовать обычный способ hg для редактирования вашего репозитория mq:

  • отменить все наборы изменений mq: hg qpop --all
  • Отредактируйте файл .hg/patches/series и удалите строки патчей, которые вы хотите удалить.
  • проверьте, что все оставшиеся исправления применяются правильно, лучше всего делать это по одному, поэтому выполните hg qpush для каждого. Если возникнут какие-либо конфликты, исправьте это сейчас.
  • Зафиксируйте изменения в репозитории mq в .hg/patches

Если вам требуется один из промежуточных патчей, проверьте наличие hg qfold и друзей.

person planetmaker    schedule 03.01.2016
comment
Смотреть. Это не то, чего я действительно хочу. Я постараюсь объяснить это более понятно. Смотрите, у меня есть репозиторий. ~/repo. У него ничего нет внутри. В ~/repo/.hg/patches есть репозиторий MQ, который содержит патчи (скажем, patch_sin, patch_cos, patch_log, patch_tan). Если я запускаю hg history внутри ~/repo, я всегда ничего не получу, потому что напрямую в репозитории ничего не делается. Но если я запущу hg history внутри ~/repo/.hg/patches или hg history --mq внутри ~/repo, я получу список наборов изменений в репозиторий MQ, а не в базовый репозиторий. - person Isroel Barenboim; 04.01.2016
comment
Я, например, работаю над этими патчами. Скажем, я сидел и писал код для реализации функции cos() внутри патча patch_cos. И я сделал несколько коммитов. Итак, если я посмотрю историю, я увижу что-то вроде: - person Isroel Barenboim; 04.01.2016
comment
набор изменений: (N+2):blah-blah-hash-(N+1) пользователь: Isroel Barenboim ‹[email protected]› дата: понедельник, 04 января, 11:59:08 2016 + 0300 резюме: Окончательная версия - person Isroel Barenboim; 04.01.2016
comment
набор изменений: (N+1):blah-blah-hash-N пользователь: Isroel Barenboim ‹[email protected]› дата: понедельник 04 января 11:53:08 2016 +0300 сводка: попытка для отладки функции N . . . набор изменений: 2:blah-blah-hash-2 пользователь: Isroel Barenboim ‹[email protected]› дата: воскресенье 13 декабря 11:53:08 2015 +0300 сводка: попытка отладки функции 1 набор изменений: 1:blah-blah-hash пользователь: Isroel Barenboim ‹[email protected]› дата: сб 12 декабря 11:53:08 2015 +0300 сводка: заглушка для функции cos() добавлен - person Isroel Barenboim; 04.01.2016
comment
Я не хочу удалять какие-либо исправления, такие как patch_cos или patch_tan. Я хочу удалить или каким-то образом свернуть эти уродливые ревизии очереди исправлений от попытки отладки функции 1 до попытки отладки функции N. Добавлена ​​​​только заглушка для функции cos(), а окончательная версия должна оставаться. - person Isroel Barenboim; 04.01.2016
comment
@IsroelBarenboim, вы должны обновить свой вопрос с помощью этого расширенного объяснения. Трудно следить за комментариями. - person Mark Tolonen; 05.01.2016
comment
Да, пожалуйста, обновите свой вопрос соответственно. С этими разъяснениями вопрос становится другим. - person planetmaker; 05.01.2016