Mercurial > hg
view tests/test-rebase-conflicts.t @ 19812:5d6cfdc38a3d
mq: simplifies the refresh hint in checklocalchanges
The `checklocalchanges` function in the `mq.queue` class takes a `refresh` argument that
changes the error message of raised exception. When refresh is
`True` the exception message is "local changes found, refresh first" otherwise,
the message is just "local changes found".
This changeset is the first of a series that extract `strip` into a standalone
extension (as discussed in issue3824). This `checklocalchanges` function is
indirectly used by the strip command. But in a standalone strip extension the
concept of "refresh first" has no sense. In practice, When used in the context
of the strip commands `refresh`'s value is always `False`.
So my final goal is a be able to extract the `checklocalchanges` logic in a
standalone extension but to keep the part related to "refresh first" in the mq
extension. However the refresh handling is deeply entangled into the
`checklocalchanges` code. It is handled as low a possible at the point we raise
the exception.
So we moves handling of refresh upper in the `checklocalchanges` code. This will
allow the extraction of a simple version in the strip extension while mq can
still inject its logic when needed.
Two helper functions `localchangesfound` and `localchangedsubreposfound` died in
the process they are replaced by simple raise lines.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Wed, 25 Sep 2013 12:28:40 +0200 |
parents | e5d9441ec281 |
children | ad9db007656f |
line wrap: on
line source
$ cat >> $HGRCPATH <<EOF > [extensions] > graphlog= > rebase= > > [phases] > publish=False > > [alias] > tglog = log -G --template "{rev}:{phase} '{desc}' {branches} {bookmarks}\n" > EOF $ hg init a $ cd a $ echo c1 >common $ hg add common $ hg ci -m C1 $ echo c2 >>common $ hg ci -m C2 $ echo c3 >>common $ hg ci -m C3 $ hg up -q -C 1 $ echo l1 >>extra $ hg add extra $ hg ci -m L1 created new head $ sed -e 's/c2/l2/' common > common.new $ mv common.new common $ hg ci -m L2 $ echo l3 >> extra2 $ hg add extra2 $ hg ci -m L3 $ hg bookmark mybook $ hg phase --force --secret 4 $ hg tglog @ 5:secret 'L3' mybook | o 4:secret 'L2' | o 3:draft 'L1' | | o 2:draft 'C3' |/ o 1:draft 'C2' | o 0:draft 'C1' Try to call --continue: $ hg rebase --continue abort: no rebase in progress [255] Conflicting rebase: $ hg rebase -s 3 -d 2 merging common warning: conflicts during merge. merging common incomplete! (edit conflicts, then use 'hg resolve --mark') unresolved conflicts (see hg resolve, then hg rebase --continue) [1] Try to continue without solving the conflict: $ hg rebase --continue abort: unresolved merge conflicts (see hg help resolve) [255] Conclude rebase: $ echo 'resolved merge' >common $ hg resolve -m common $ hg rebase --continue saved backup bundle to $TESTTMP/a/.hg/strip-backup/*-backup.hg (glob) $ hg tglog @ 5:secret 'L3' mybook | o 4:secret 'L2' | o 3:draft 'L1' | o 2:draft 'C3' | o 1:draft 'C2' | o 0:draft 'C1' Check correctness: $ hg cat -r 0 common c1 $ hg cat -r 1 common c1 c2 $ hg cat -r 2 common c1 c2 c3 $ hg cat -r 3 common c1 c2 c3 $ hg cat -r 4 common resolved merge $ hg cat -r 5 common resolved merge Bookmark stays active after --continue $ hg bookmarks * mybook 5:d67b21408fc0 $ cd ..