Mercurial > hg-stable
view tests/test-branch-option.t @ 44583:5205b46bd887
fix: add a -s option to format a revision and its descendants
`hg fix -r abc123` will format that commit but not its
descendants. That seems expected given the option name (`-r`), but
it's very rarely what the user wants to do. The problem is that any
descendants of that commit will not be formatted, leaving them as
orphans that are hard to evolve. They are hard to evolve because the
new parent will have formatting changes that the orphan doesn't have.
I talked to Danny Hooper (who wrote most of the fix extension) about
the problem and we agreed that deprecating `-r` in favor of a new `-s`
argument (mimicing rebase's `-s`) would be a good way of reducing the
risk that users end up with these hard-to-evolve orphans. So that's
what this patch implements.
Differential Revision: https://phab.mercurial-scm.org/D8287
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 13 Mar 2020 12:16:00 -0700 |
parents | eb586ed5d8ce |
children | 95c4cca641f6 |
line wrap: on
line source
test branch selection options $ hg init branch $ cd branch $ hg branch a marked working directory as branch a (branches are permanent and global, did you want a bookmark?) $ echo a > foo $ hg ci -d '0 0' -Ama adding foo $ echo a2 > foo $ hg ci -d '0 0' -ma2 $ hg up 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg branch c marked working directory as branch c $ echo c > foo $ hg ci -d '0 0' -mc $ hg tag -l z $ cd .. $ hg clone -r 0 branch branch2 adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets 5b65ba7c951d updating to branch a 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd branch2 $ hg up 0 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg branch b marked working directory as branch b $ echo b > foo $ hg ci -d '0 0' -mb $ hg up 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg --encoding utf-8 branch æ marked working directory as branch \xc3\xa6 (esc) $ echo ae1 > foo $ hg ci -d '0 0' -mae1 $ hg up 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg --encoding utf-8 branch -f æ marked working directory as branch \xc3\xa6 (esc) $ echo ae2 > foo $ hg ci -d '0 0' -mae2 created new head $ hg up 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg branch -f b marked working directory as branch b $ echo b2 > foo $ hg ci -d '0 0' -mb2 created new head unknown branch and fallback $ hg in -qbz abort: unknown branch 'z'! [255] $ hg in -q ../branch#z 2:f25d57ab0566 $ hg out -qbz abort: unknown branch 'z'! [255] in rev c branch a $ hg in -qr c ../branch#a 1:dd6e60a716c6 2:f25d57ab0566 $ hg in -qr c -b a 1:dd6e60a716c6 2:f25d57ab0566 out branch . $ hg out -q ../branch#. 1:b84708d77ab7 4:65511d0e2b55 $ hg out -q -b . 1:b84708d77ab7 4:65511d0e2b55 out branch . non-ascii $ hg --encoding utf-8 up æ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg --encoding latin1 out -q ../branch#. 2:df5a44224d4e 3:4f4a5125ca10 $ hg --encoding latin1 out -q -b . 2:df5a44224d4e 3:4f4a5125ca10 clone branch b $ cd .. $ hg clone branch2#b branch3 adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 1 files (+1 heads) new changesets 5b65ba7c951d:65511d0e2b55 updating to branch b 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg -q -R branch3 heads b 2:65511d0e2b55 1:b84708d77ab7 $ hg -q -R branch3 parents 2:65511d0e2b55 $ rm -rf branch3 clone rev a branch b $ hg clone -r a branch2#b branch3 adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 1 files (+1 heads) new changesets 5b65ba7c951d:65511d0e2b55 updating to branch a 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg -q -R branch3 heads b 2:65511d0e2b55 1:b84708d77ab7 $ hg -q -R branch3 parents 0:5b65ba7c951d $ rm -rf branch3