Что делать, если в одном патче в hg mq слишком много изменений в очереди патчей? - PullRequest
5 голосов
/ 24 марта 2011

Цель плагина hg mq - иметь возможность совершать совершенные коммиты в ваш репозиторий, не путая изменения, которые вы внесли в ваш рассеянный ADHD, вызвавший бессвязные действия в вашем коде;

Например ....

Я работаю над ошибкой x, когда замечаю ошибку y и начинаю работать над ней. На этом этапе вы должны создать новое исправление в очереди исправлений, чтобы не перепутать изменения, когда hg qfinish зафиксировано в вашем хранилище.

Теперь допустим на минуту, что вы забыли сделать новый патч и в процессе hg qrefresh. Затем, осознав свою ошибку, вы хотите разделить изменения от одного патча на два патча.

Я понимаю, что это связано с редактированием вашего файла исправлений (и нового файла исправлений) в очереди, чтобы разделить изменения на отдельные исправления и последующие коммиты. Тем не менее, я еще не умею редактировать файлы патчей различий.

Где я могу узнать об этом? И как можно это сделать?

Ответы [ 4 ]

3 голосов
/ 24 марта 2011

Другой вариант (при условии, что он работает на вашей платформе) - это версия 2.0 TortoiseHG. «Неправильно» названная утилита Shelve позволяет перемещать фрагменты и файлы между исправлениями или в рабочий каталог. Он доступен для Windows, Linux и, возможно, OSX.

http://tortoisehg.bitbucket.io/

2 голосов
/ 17 мая 2011

Вы можете активировать расширение записи , добавив к .hgrc следующие строки:

[extensions]
hgext.record =

Вы можете очистить свой текущий патч с помощью

hg qrefresh nothing

(обратите внимание, что "nothing" - это просто случайная строка: аргументы qrefresh - это список файлов, которые должны быть включены в текущий патч, поэтому все, что не является именем измененного файла, делаю - я обычно использую "0")

Теперь с hg qrecord <patchName> вы можете интерактивно выбирать, какие изменения должны быть внесены в новый патч. Оставшиеся изменения могут быть добавлены в другой патч с помощью qnew или другого qrecord. Наконец, вы можете использовать qpop, qfold или редактировать .hg/patches/series для объединения и изменения порядка исправлений.

2 голосов
/ 24 марта 2011

Как отмечено в этом связанном вопросе SO , ознакомьтесь с разделом " Разделить патч на несколько патчей " в руководстве по MQ.

0 голосов
/ 24 марта 2011

У меня есть псевдоним оболочки, viq="vim $(hg root)/.hg/patches/", который я использую только для этих ситуаций!

Я просто запускаю viq, чтобы вытащить патчи, затем вручную отредактирую diff и переместу блоки в другие патчи в зависимости от ситуации.

Я предпочитаю это по сравнению с интерактивными методами (например, git add -i), потому что я не чувствую себя в такой безопасности при работе с интерактивной подсказкой, как при работе с моим редактором (я знаю, что мой редактор создает резервные копии, имеет тривиальные операции отмены и т. Д.) ...).

...