Ответ таков: это зависит от того, сколько ручного труда вы готовы потратить.
Что вы можете сделать - это засучить рукава и использовать чердак в интерактивном режиме. Если вы используете TortoiseHg, он у вас уже есть, просто запустите hgtk shelve
, и он позволит вам перемещать изменения по одному разному блоку за раз. (кусок - это набор смежных линий различий)
Существует множество других инструментов исправления различий, которые дадут вам разрешение на один блок. Дайте мне знать, если вам нужно больше деталей.
И просто для удовольствия, давайте поговорим о том, что автоматическое решение, такое как bisect
, невозможно, так как не всегда имеет смысл, что половина набора изменений все равно должна компилироваться. Хуже того, что если они скомпилируются, но у них будут логические ошибки? Вот простой наихудший сценарий ...
void main(){
Foo *x = malloc(128);
frobFoo(&x);
- free(x); //line 4 removed in changeset
}
void frobFoo(Foo ** x){
+ free(*x); //line 8 added in changeset
}