Mercurial > evolve
view tests/test-evolve-orphan-split.t @ 3539:9bd64091e880
next: factor out the logic to update to changeset in another function
This patch moves the logic to update to children changeset during `hg next` in a
separate function because we want to re-use the logic when we will prompt user
to choose a changeset in case of multiple childrens.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Fri, 16 Mar 2018 11:24:35 +0530 |
parents | 8b5093f333dc |
children | bc47c09c9782 |
line wrap: on
line source
** Testing resolution of orphans by `hg evolve` where an obsolete changeset has multiple successors ** $ cat >> $HGRCPATH <<EOF > [ui] > interactive = True > [alias] > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}" > [extensions] > rebase = > EOF $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH Repo Setup $ hg init repo $ cd repo $ echo ".*\.orig" > .hgignore $ hg add .hgignore $ hg ci -m "added hgignore" An orphan changeset with parent got splitted -------------------------------------------- $ for ch in a b c; do echo foo > $ch; done; $ hg add a b $ hg ci -m "added a and b" $ hg add c $ hg ci -m "added c" $ hg glog @ 2:86e1ebf1ca61 added c | () draft o 1:d0ddb614efbd added a and b | () draft o 0:8fa14d15e168 added hgignore () draft $ hg split -r 1 <<EOF > y > y > n > y > EOF 0 files updated, 0 files merged, 3 files removed, 0 files unresolved adding a adding b diff --git a/a b/a new file mode 100644 examine changes to 'a'? [Ynesfdaq?] y @@ -0,0 +1,1 @@ +foo record change 1/2 to 'a'? [Ynesfdaq?] y diff --git a/b b/b new file mode 100644 examine changes to 'b'? [Ynesfdaq?] n created new head Done splitting? [yN] y 1 new orphan changesets $ hg glog @ 4:8b179cffc81c added a and b | () draft o 3:bd3735d4dab0 added a and b | () draft | * 2:86e1ebf1ca61 added c | | () draft | x 1:d0ddb614efbd added a and b |/ () draft o 0:8fa14d15e168 added hgignore () draft $ hg evolve move:[2] added c atop:[4] added a and b working directory is now at af13f0560b31 $ hg glog @ 5:af13f0560b31 added c | () draft o 4:8b179cffc81c added a and b | () draft o 3:bd3735d4dab0 added a and b | () draft o 0:8fa14d15e168 added hgignore () draft When the successors does not form a linear chain and are multiple heads ----------------------------------------------------------------------- $ hg fold -r .^^::. --exact -m "added a b c" 3 changesets folded 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg glog @ 6:f89e4764f2ed added a b c | () draft o 0:8fa14d15e168 added hgignore () draft $ echo foo > d $ hg ci -Aqm "added d" $ hg glog @ 7:d48a30875f01 added d | () draft o 6:f89e4764f2ed added a b c | () draft o 0:8fa14d15e168 added hgignore () draft $ hg prev 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [6] added a b c $ hg split -r . <<EOF > y > n > y > y > y > y > y > EOF 0 files updated, 0 files merged, 3 files removed, 0 files unresolved adding a adding b adding c diff --git a/a b/a new file mode 100644 examine changes to 'a'? [Ynesfdaq?] y @@ -0,0 +1,1 @@ +foo record change 1/3 to 'a'? [Ynesfdaq?] n diff --git a/b b/b new file mode 100644 examine changes to 'b'? [Ynesfdaq?] y @@ -0,0 +1,1 @@ +foo record change 2/3 to 'b'? [Ynesfdaq?] y diff --git a/c b/c new file mode 100644 examine changes to 'c'? [Ynesfdaq?] y @@ -0,0 +1,1 @@ +foo record change 3/3 to 'c'? [Ynesfdaq?] y created new head Done splitting? [yN] y 1 new orphan changesets $ hg glog @ 9:c0fbf8aaf6c4 added a b c | () draft o 8:f2632392aefe added a b c | () draft | * 7:d48a30875f01 added d | | () draft | x 6:f89e4764f2ed added a b c |/ () draft o 0:8fa14d15e168 added hgignore () draft $ hg rebase -r . -d 8fa14d15e168 rebasing 9:c0fbf8aaf6c4 "added a b c" (tip) $ hg glog @ 10:7f87764e5b64 added a b c | () draft | o 8:f2632392aefe added a b c |/ () draft | * 7:d48a30875f01 added d | | () draft | x 6:f89e4764f2ed added a b c |/ () draft o 0:8fa14d15e168 added hgignore () draft $ hg evolve --dry-run cannot solve split across two branches XXX: this sounds like a good thing, maybe we should suggest using commands like grab or rebase to resolve this. Moreover showing the branch heads or list of successors on different branches will be good. $ hg evolve --all cannot solve split across two branches