Эффективный способ сделать новый патч из некоторых текущих изменений

StackOverflow https://stackoverflow.com/questions/8816811

  •  27-10-2019
  •  | 
  •  

Вопрос

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

Таким образом, состояние для рабочего каталога: Платы 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, как правило, мало по сравнению.

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top