Mercurial > evolve
diff tests/test-topic-rebase.t @ 2679:5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
The rebase code passes branchmerge equals to True while updating to the rebased
commit. We need to make sure topic is preserved even after rebase and hence we
need to update the topic even when branchmerge argument is set to True. But
there is a twist in the tale, merge also uses this part of code and we allow to
update topic when brancmerge is True, in merge cases the topic after merge will
the topic of the destination commit, not the topic of working directory parent.
So we need the function to have information about whether a rebase is going on,
and we do it by wrapping the rebase command and storing some value in the
config. This is a bit hacky but works for now. This patch fixes issue related to
loosing of topic while rebase.
Thanks to Boris Feld for the rigourous tests.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Thu, 29 Jun 2017 02:31:55 +0530 |
parents | |
children | d22090c6e68f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-topic-rebase.t Thu Jun 29 02:31:55 2017 +0530 @@ -0,0 +1,161 @@ +test of the rebase command +-------------------------- + + $ cat >> $HGRCPATH <<EOF + > [defaults] + > amend=-d "0 0" + > fold=-d "0 0" + > split=-d "0 0" + > amend=-d "0 0" + > [web] + > push_ssl = false + > allow_push = * + > [phases] + > publish = False + > [diff] + > git = 1 + > unified = 0 + > [ui] + > interactive = true + > [extensions] + > hgext.graphlog= + > rebase= + > EOF + $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH + $ echo "topic=$(echo $(dirname $TESTDIR))/hgext3rd/topic/" >> $HGRCPATH + $ mkcommit() { + > echo "$1" > "$1" + > hg add "$1" + > hg ci -m "add $1" $2 $3 + > } + $ logtopic() { + > hg log -G -T "{rev}:{node}\ntopics: {topics}" + > } + +Check that rebase keep the topic in the simple case (1 changeset, no merge conflict) +------------------------------------------------------------------------------------ + + $ hg init testrebase + $ cd testrebase + $ mkcommit ROOT + +Work on myfeature + $ hg topic myfeature + $ mkcommit feature1 + $ hg stack + ### topic: myfeature + ### branch: default + t1@ add feature1 (current) + ^ add ROOT + $ logtopic + @ 1:39e7a938055e87615edf675c24a10997ff05bb06 + | topics: myfeature + o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 + topics: + +Create another commit on default + $ hg update --rev default + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ mkcommit default + $ logtopic + @ 2:be7622a7a0f43ba713e152f56441275f8e8711ef + | topics: + | o 1:39e7a938055e87615edf675c24a10997ff05bb06 + |/ topics: myfeature + o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 + topics: + +Rebase the commit + $ hg update --rev 1 + switching to topic myfeature + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg rebase + rebasing 1:39e7a938055e "add feature1" + switching to topic myfeature + $ hg stack + ### topic: myfeature + ### branch: default + t1@ add feature1 (current) + ^ add default + $ logtopic + @ 3:fc6593661cf3256ba165cbccd6019ead17cc3726 + | topics: myfeature + o 2:be7622a7a0f43ba713e152f56441275f8e8711ef + | topics: + o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 + topics: + $ hg up 3 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg stack + ### topic: myfeature + ### branch: default + t1@ add feature1 (current) + ^ add default + +Check that rebase keep the topic in case of merge conflict +---------------------------------------------------------- + +Create a common base + $ hg topic --clear + $ echo "A" > file + $ hg commit -A -m "default2" file + created new head + +Update the common file in a topic + $ hg topic myotherfeature + $ echo "B" >> file + $ hg commit -m "myotherfeature1" + +Update the common file in default + $ hg update --rev default + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ echo "A2" > file + $ hg commit -m "default3" + +Rebase the topic + $ hg update --rev 5 + switching to topic myotherfeature + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg rebase + rebasing 5:81f854012ec5 "myotherfeature1" + merging file + warning: conflicts while merging file! (edit, then use 'hg resolve --mark') + switching to topic myotherfeature + unresolved conflicts (see hg resolve, then hg rebase --continue) + [1] + +Resolve the conflict + $ echo "A2\nB" > file + $ hg resolve -m + (no more unresolved files) + continue: hg rebase --continue + $ hg rebase --continue + rebasing 5:81f854012ec5 "myotherfeature1" + +Check the the commit has the right topic + + $ logtopic + @ 7:6ccb9ec4913b64f3ad719ff1ba66495a70bf35a4 + | topics: myotherfeature + o 6:0b124ef641a7a6f4715d962650d3b367e8c800be + | topics: + o 4:0cd2e1a45ac4e3f9603a05ccfa6d1c70cd759bc5 + | topics: + o 3:fc6593661cf3256ba165cbccd6019ead17cc3726 + | topics: myfeature + o 2:be7622a7a0f43ba713e152f56441275f8e8711ef + | topics: + o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 + topics: + $ hg stack + ### topic: myotherfeature + ### branch: default + t1@ myotherfeature1 (current) + ^ default3 + $ hg update --rev 7 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg stack + ### topic: myotherfeature + ### branch: default + t1@ myotherfeature1 (current) + ^ default3