Эффективный способ сделать новый патч из некоторых текущих изменений - PullRequest
2 голосов
/ 11 января 2012

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

Таким образом, состояние рабочего каталога: применены исправления A, B, C, плюс изменения, которые должны быть внесены в исправление C, и изменения, которые должны быть в новом исправлении D.

Мой текущий рабочий процесс для этого выглядит следующим образом:

hg qnew D.patch files-for-patch-D..
hg qnew temp.patch # changes for patch C
hg qpop
hg qpop
# Now I'm on patch C
hg qfold temp.patch # Integrate changes into patch C
# Here I could have patch errors.. 
hg qpush

Я знаю, что я мог бы сделать это так

hg qrefresh files-for-patch-C..
hg qnew -m "..." new-feature.patch 

Недостатком этого подхода является то, что количество файлов для патчаC обычно большой, и неудобно помещать их все в командную строку.Количество файлов для патча D обычно невелико по сравнению с ним.

Есть ли лучший способ сделать это, чем я описал выше?

1 Ответ

1 голос
/ 11 января 2012

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

$ hg qrefresh -X files-for-patch-D
$ hg qnew D.patch

То есть: исключить несколько файлов, которые вы изменили для патча D, вместо попытки включить всеправильные файлы для патча C.

Вы также можете принудительно вставить патч D (с hg qpop -f) вместо того, чтобы сохранять ваши изменения во временном патче.Это работает, только если файлы, затронутые патчем D, не пересекаются с изменениями в рабочей копии, т. Е. Когда вы не использовали qrecord из расширения записи для создания патча D.

...