Я не могу воспроизвести ваш опыт. Вот моя попытка:
$ mkdir hg
$ cd hg
$ hg init
$ cat > exp.lang << 'end'
> num add(num a, num b) {
> return a - b;
> }
> end
$ hg add exp.lang
$ hg commit -m initial
$ hg branch other
marked working directory as branch other
(branches are permanent and global, did you want a bookmark?)
$ cat >> exp.lang << 'end'
>
> num sub(num a, num b) {
> return a - b;
> }
> end
$ hg commit -m 'add sub()'
$ hg checkout default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ ed exp.lang
42
2
return a - b;
s/-/+/
w
42
q
$ hg commit -m 'fix bug'
Насколько я могу судить, это то, что вы сказали, что сделали: исправьте ошибку в ветке по умолчанию. Давайте возьмем исправление и посмотрим, выглядит ли оно правильно:
$ hg checkout other
$ hg graft -r 2
grafting 2:2670b3299c96 "fix bug" (tip)
merging exp.lang
$ hg lga # lga is a graphical log alias
@ 3:811f4d1a7dc4:draft other tip Chris Torek
| fix bug (54 seconds ago)
|
| o 2:2670b3299c96:draft Chris Torek
| | fix bug (54 seconds ago)
| |
o | 1:a780b1c8c579:draft other Chris Torek
|/ add sub() (112 seconds ago)
|
o 0:b085834fc520:draft Chris Torek
initial (3 minutes ago)
$ cat exp.lang
num add(num a, num b) {
return a + b;
}
num sub(num a, num b) {
return a - b;
}
Пока все хорошо, насколько я могу судить, я воспроизвел ваши настройки. Сейчас:
$ hg checkout default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg merge other
warning: conflicts while merging exp.lang! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
Слияние не удалось, потому что Mercurial нужна человеческая помощь. Вот что увидел Mercurial:
$ cat exp.lang
num add(num a, num b) {
<<<<<<< working copy
return a + b;
||||||| base
return a - b;
=======
return a + b;
}
num sub(num a, num b) {
return a - b;
>>>>>>> merge rev
}
Базовая копия файла, начиная с версии 0, содержит ошибку: add
возвращает a - b
. Кончик текущей ветки (по умолчанию) версии 2 выглядит следующим образом:
$ hg abort
aborting the merge, updating back to 2670b3299c96
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat exp.lang
num add(num a, num b) {
return a + b;
}
что и следовало ожидать: ошибка исправлена. Ревизия, в которую мы объединяемся, имеет такое же однострочное исправление, , но также вставляет все эти другие вещи - четыре дополнительные строки - перед последней закрывающей скобкой. Какой из них должен использовать VCS: исправление одной строки или исправление пяти строк? Он не знает, поэтому останавливается, чтобы получить помощь.