mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
4bc99faa5e
The previous error message had two issues: The first issue was that it wasn't, in fact, an error but a warning, even though it described a fatal error condition preventing the successful completion of the command. The second was that it didn't mention the immutable changesets, leaving the user guessing at the true cause of the error. The main downside to this change is that we now get an 'abort: can't abort...' message which technically contradicts itself. In this case, I blame that on the two uses we have for the word; if it weren't for backwards compatibility, we could make util.Abort print out 'error: <whatever>'.
269 lines
3.9 KiB
Perl
269 lines
3.9 KiB
Perl
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> graphlog=
|
|
> rebase=
|
|
>
|
|
> [phases]
|
|
> publish=False
|
|
>
|
|
> [alias]
|
|
> tglog = log -G --template "{rev}: '{desc}' {branches}\n"
|
|
> tglogp = log -G --template "{rev}:{phase} '{desc}' {branches}\n"
|
|
> EOF
|
|
|
|
|
|
$ hg init a
|
|
$ cd a
|
|
|
|
$ echo A > A
|
|
$ hg ci -Am A
|
|
adding A
|
|
|
|
$ echo B > B
|
|
$ hg ci -Am B
|
|
adding B
|
|
|
|
$ echo C >> A
|
|
$ hg ci -m C
|
|
|
|
$ hg up -q -C 0
|
|
|
|
$ echo D >> A
|
|
$ hg ci -m D
|
|
created new head
|
|
|
|
$ echo E > E
|
|
$ hg ci -Am E
|
|
adding E
|
|
|
|
$ cd ..
|
|
|
|
|
|
Changes during an interruption - continue:
|
|
|
|
$ hg clone -q -u . a a1
|
|
$ cd a1
|
|
|
|
$ hg tglog
|
|
@ 4: 'E'
|
|
|
|
|
o 3: 'D'
|
|
|
|
|
| o 2: 'C'
|
|
| |
|
|
| o 1: 'B'
|
|
|/
|
|
o 0: 'A'
|
|
|
|
Rebasing B onto E:
|
|
|
|
$ hg rebase -s 1 -d 4
|
|
merging A
|
|
warning: conflicts during merge.
|
|
merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
|
|
abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
|
|
[255]
|
|
|
|
Force a commit on C during the interruption:
|
|
|
|
$ hg up -q -C 2
|
|
|
|
$ echo 'Extra' > Extra
|
|
$ hg add Extra
|
|
$ hg ci -m 'Extra'
|
|
|
|
Force this commit onto secret phase
|
|
|
|
$ hg phase --force --secret 6
|
|
|
|
$ hg tglogp
|
|
@ 6:secret 'Extra'
|
|
|
|
|
| o 5:draft 'B'
|
|
| |
|
|
| o 4:draft 'E'
|
|
| |
|
|
| o 3:draft 'D'
|
|
| |
|
|
o | 2:draft 'C'
|
|
| |
|
|
o | 1:draft 'B'
|
|
|/
|
|
o 0:draft 'A'
|
|
|
|
Resume the rebasing:
|
|
|
|
$ hg rebase --continue
|
|
merging A
|
|
warning: conflicts during merge.
|
|
merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
|
|
abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
|
|
[255]
|
|
|
|
Solve the conflict and go on:
|
|
|
|
$ echo 'conflict solved' > A
|
|
$ rm A.orig
|
|
$ hg resolve -m A
|
|
|
|
$ hg rebase --continue
|
|
warning: new changesets detected on source branch, not stripping
|
|
|
|
$ hg tglogp
|
|
@ 7:draft 'C'
|
|
|
|
|
| o 6:secret 'Extra'
|
|
| |
|
|
o | 5:draft 'B'
|
|
| |
|
|
o | 4:draft 'E'
|
|
| |
|
|
o | 3:draft 'D'
|
|
| |
|
|
| o 2:draft 'C'
|
|
| |
|
|
| o 1:draft 'B'
|
|
|/
|
|
o 0:draft 'A'
|
|
|
|
$ cd ..
|
|
|
|
|
|
Changes during an interruption - abort:
|
|
|
|
$ hg clone -q -u . a a2
|
|
$ cd a2
|
|
|
|
$ hg tglog
|
|
@ 4: 'E'
|
|
|
|
|
o 3: 'D'
|
|
|
|
|
| o 2: 'C'
|
|
| |
|
|
| o 1: 'B'
|
|
|/
|
|
o 0: 'A'
|
|
|
|
Rebasing B onto E:
|
|
|
|
$ hg rebase -s 1 -d 4
|
|
merging A
|
|
warning: conflicts during merge.
|
|
merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
|
|
abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
|
|
[255]
|
|
|
|
Force a commit on B' during the interruption:
|
|
|
|
$ hg up -q -C 5
|
|
|
|
$ echo 'Extra' > Extra
|
|
$ hg add Extra
|
|
$ hg ci -m 'Extra'
|
|
|
|
$ hg tglog
|
|
@ 6: 'Extra'
|
|
|
|
|
o 5: 'B'
|
|
|
|
|
o 4: 'E'
|
|
|
|
|
o 3: 'D'
|
|
|
|
|
| o 2: 'C'
|
|
| |
|
|
| o 1: 'B'
|
|
|/
|
|
o 0: 'A'
|
|
|
|
Abort the rebasing:
|
|
|
|
$ hg rebase --abort
|
|
warning: new changesets detected on target branch, can't abort
|
|
[255]
|
|
|
|
$ hg tglog
|
|
@ 6: 'Extra'
|
|
|
|
|
o 5: 'B'
|
|
|
|
|
o 4: 'E'
|
|
|
|
|
o 3: 'D'
|
|
|
|
|
| o 2: 'C'
|
|
| |
|
|
| o 1: 'B'
|
|
|/
|
|
o 0: 'A'
|
|
|
|
$ cd ..
|
|
|
|
Changes during an interruption - abort (again):
|
|
|
|
$ hg clone -q -u . a a3
|
|
$ cd a3
|
|
|
|
$ hg tglogp
|
|
@ 4:draft 'E'
|
|
|
|
|
o 3:draft 'D'
|
|
|
|
|
| o 2:draft 'C'
|
|
| |
|
|
| o 1:draft 'B'
|
|
|/
|
|
o 0:draft 'A'
|
|
|
|
Rebasing B onto E:
|
|
|
|
$ hg rebase -s 1 -d 4
|
|
merging A
|
|
warning: conflicts during merge.
|
|
merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
|
|
abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
|
|
[255]
|
|
|
|
Change phase on B and B'
|
|
|
|
$ hg up -q -C 5
|
|
$ hg phase --public 1
|
|
$ hg phase --public 5
|
|
$ hg phase --secret -f 2
|
|
|
|
$ hg tglogp
|
|
@ 5:public 'B'
|
|
|
|
|
o 4:public 'E'
|
|
|
|
|
o 3:public 'D'
|
|
|
|
|
| o 2:secret 'C'
|
|
| |
|
|
| o 1:public 'B'
|
|
|/
|
|
o 0:public 'A'
|
|
|
|
Abort the rebasing:
|
|
|
|
$ hg rebase --abort
|
|
abort: can't abort rebase due to immutable changesets 45396c49d53b
|
|
(see hg help phases for details)
|
|
[255]
|
|
|
|
$ hg tglogp
|
|
@ 5:public 'B'
|
|
|
|
|
o 4:public 'E'
|
|
|
|
|
o 3:public 'D'
|
|
|
|
|
| o 2:secret 'C'
|
|
| |
|
|
| o 1:public 'B'
|
|
|/
|
|
o 0:public 'A'
|
|
|
|
$ cd ..
|