У меня есть репозиторий Mercurial. У него есть очередь исправлений (которая сама по себе является репозиторием, содержащим исправления). К сожалению, я сделал слишком много неприглядных коммитов в MQ (с командой hg commit --mq
). Если я запущу команду hg history --mq
, она напечатает кучу ненужных наборов изменений, скажем, A, B, B1, B2, B3, B4, C, D. Я просто хочу избавиться от этих B1, B2, B3 и B4, но я не хочу удалять последние C и D. Только эти промежуточные наборы изменений. Как мне добиться желаемого?
Как удалить наборы изменений из истории изменений репозитория MQ?
Ответы (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
Смотреть. Это не то, чего я действительно хочу. Я постараюсь объяснить это более понятно. Смотрите, у меня есть репозиторий.
~/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
Я, например, работаю над этими патчами. Скажем, я сидел и писал код для реализации функции
cos()
внутри патча patch_cos
. И я сделал несколько коммитов. Итак, если я посмотрю историю, я увижу что-то вроде:
- person Isroel Barenboim; 04.01.2016
набор изменений: (N+2):blah-blah-hash-(N+1) пользователь: Isroel Barenboim ‹[email protected]› дата: понедельник, 04 января, 11:59:08 2016 + 0300 резюме: Окончательная версия
- person Isroel Barenboim; 04.01.2016
набор изменений: (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
Я не хочу удалять какие-либо исправления, такие как
patch_cos
или patch_tan
. Я хочу удалить или каким-то образом свернуть эти уродливые ревизии очереди исправлений от попытки отладки функции 1 до попытки отладки функции N. Добавлена только заглушка для функции cos(), а окончательная версия должна оставаться.
- person Isroel Barenboim; 04.01.2016
@IsroelBarenboim, вы должны обновить свой вопрос с помощью этого расширенного объяснения. Трудно следить за комментариями.
- person Mark Tolonen; 05.01.2016
Да, пожалуйста, обновите свой вопрос соответственно. С этими разъяснениями вопрос становится другим.
- person planetmaker; 05.01.2016
qfinish
их фиксировать в основном репозитории? Никто, кроме вас, не увидит историю очереди исправлений. - person Mark Tolonen   schedule 05.01.2016qimport
историю, которую вы не хотите, и используйтеqdel
илиqfold
, чтобы удалить или сжать историю. - person Mark Tolonen   schedule 05.01.2016