[PATCH] rebase: fix bug where --keepbranches could leave wrong branch in dirstate

Augie Fackler durin42 at gmail.com
Thu Apr 30 21:19:02 CDT 2009


Can someone take a look at this? Or should I file an issue and ref  
this thread on gmane so that the patch doesn't get wholly forgotten?

On Apr 28, 2009, at 12:55 PM, Augie Fackler wrote:

> # HG changeset patch
> # User Augie Fackler <durin42 at gmail.com>
> # Date 1240937757 18000
> # Node ID e3cd81c352d193edba04bdaddb677dd888b0240f
> # Parent  1320459daa91b8ae815ff67387fce8af14740239
> rebase: fix bug where --keepbranches could leave wrong branch in  
> dirstate
>
> Adds a test for the expected behavior, and  updates other tests that  
> broke.
>
> diff --git a/hgext/rebase.py b/hgext/rebase.py
> --- a/hgext/rebase.py
> +++ b/hgext/rebase.py
> @@ -15,7 +15,7 @@
> '''
>
> from mercurial import util, repair, merge, cmdutil, commands, error
> -from mercurial import extensions, ancestor, copies, patch
> +from mercurial import extensions, ancestor, copies, patch, hg
> from mercurial.commands import templateopts
> from mercurial.node import nullrev
> from mercurial.lock import release
> @@ -135,6 +135,7 @@
>                 repair.strip(repo.ui, repo, repo[min(state)].node(),  
> "strip")
>
>         clearstatus(repo)
> +        hg.clean(repo, repo.parents()[0].hex())
>         ui.status(_("rebase completed\n"))
>         if os.path.exists(repo.sjoin('undo')):
>             util.unlink(repo.sjoin('undo'))
> diff --git a/tests/test-bookmarks-rebase.out b/tests/test-bookmarks- 
> rebase.out
> --- a/tests/test-bookmarks-rebase.out
> +++ b/tests/test-bookmarks-rebase.out
> @@ -15,6 +15,7 @@
> adding manifests
> adding file changes
> added 1 changesets with 1 changes to 1 files (-1 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> changeset:   3:9163974d1cb5
> tag:         tip
> diff --git a/tests/test-rebase-check-restore.out b/tests/test-rebase- 
> check-restore.out
> --- a/tests/test-rebase-check-restore.out
> +++ b/tests/test-rebase-check-restore.out
> @@ -18,6 +18,7 @@
> abort: fix unresolved conflicts with hg resolve then run hg rebase -- 
> continue
>
> % - Solve the conflict and go on
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  7:C:
> |
> @@ -61,6 +62,7 @@
> adding manifests
> adding file changes
> added 1 changesets with 1 changes to 1 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  5:F:notdefault
> |
> diff --git a/tests/test-rebase-collapse.out b/tests/test-rebase- 
> collapse.out
> --- a/tests/test-rebase-collapse.out
> +++ b/tests/test-rebase-collapse.out
> @@ -22,6 +22,7 @@
> adding manifests
> adding file changes
> added 5 changesets with 6 changes to 6 files (+1 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  5: Collapsed revision
> |  * B
> @@ -52,6 +53,7 @@
> adding manifests
> adding file changes
> added 3 changesets with 3 changes to 3 files (+1 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  6: Collapsed revision
> |  * E
> @@ -101,6 +103,7 @@
> adding manifests
> adding file changes
> added 2 changesets with 3 changes to 3 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @    5: Collapsed revision
> |\   * E
> @@ -155,6 +158,7 @@
> adding manifests
> adding file changes
> added 2 changesets with 3 changes to 3 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @    5: Collapsed revision
> |\   * E
> @@ -201,6 +205,7 @@
> adding manifests
> adding file changes
> added 2 changesets with 4 changes to 4 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  2: Collapsed revision
> |  * B
> diff --git a/tests/test-rebase-conflicts.out b/tests/test-rebase- 
> conflicts.out
> --- a/tests/test-rebase-conflicts.out
> +++ b/tests/test-rebase-conflicts.out
> @@ -32,6 +32,7 @@
> adding manifests
> adding file changes
> added 3 changesets with 3 changes to 3 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  5: L3
> |
> diff --git a/tests/test-rebase-interruptions.out b/tests/test-rebase- 
> interruptions.out
> --- a/tests/test-rebase-interruptions.out
> +++ b/tests/test-rebase-interruptions.out
> @@ -41,6 +41,7 @@
>
> % - Solve the conflict and go on
> warning: new changesets detected on source branch, not stripping
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  7: C
> |
> diff --git a/tests/test-rebase-issue-noparam-single-rev.out b/tests/ 
> test-rebase-issue-noparam-single-rev.out
> --- a/tests/test-rebase-issue-noparam-single-rev.out
> +++ b/tests/test-rebase-issue-noparam-single-rev.out
> @@ -19,6 +19,7 @@
> adding manifests
> adding file changes
> added 3 changesets with 3 changes to 3 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  4:l1
> |
> @@ -51,6 +52,7 @@
> adding manifests
> adding file changes
> added 3 changesets with 3 changes to 3 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  4:l2
> |
> diff --git a/tests/test-rebase-keep-branch b/tests/test-rebase-keep- 
> branch
> --- a/tests/test-rebase-keep-branch
> +++ b/tests/test-rebase-keep-branch
> @@ -28,3 +28,5 @@
> hg update -C 3
> hg rebase -b 4 -d 3 --keepbranches 2>&1 | sed 's/\(saving bundle to  
> \).*/\1/'
> hg glog --template '{rev}:{desc}:{branches}\n'
> +echo '% dirstate branch should be "notdefault"'
> +hg branch
> diff --git a/tests/test-rebase-keep-branch.out b/tests/test-rebase- 
> keep-branch.out
> --- a/tests/test-rebase-keep-branch.out
> +++ b/tests/test-rebase-keep-branch.out
> @@ -20,6 +20,7 @@
> adding manifests
> adding file changes
> added 1 changesets with 1 changes to 1 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  4:r1:notdefault
> |
> @@ -31,3 +32,5 @@
> |
> o  0:c1:
>
> +% dirstate branch should be "notdefault"
> +notdefault
> diff --git a/tests/test-rebase-mq-skip.out b/tests/test-rebase-mq- 
> skip.out
> --- a/tests/test-rebase-mq-skip.out
> +++ b/tests/test-rebase-mq-skip.out
> @@ -13,6 +13,7 @@
> adding manifests
> adding file changes
> added 2 changesets with 2 changes to 2 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  3 P0 tags: p0.patch qtip tip qbase
> |
> diff --git a/tests/test-rebase-mq.out b/tests/test-rebase-mq.out
> --- a/tests/test-rebase-mq.out
> +++ b/tests/test-rebase-mq.out
> @@ -30,6 +30,7 @@
> adding manifests
> adding file changes
> added 2 changesets with 2 changes to 1 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  3 P1 tags: qtip tip f2.patch
> |
> diff --git a/tests/test-rebase-parameters.out b/tests/test-rebase- 
> parameters.out
> --- a/tests/test-rebase-parameters.out
> +++ b/tests/test-rebase-parameters.out
> @@ -129,6 +129,7 @@
> adding manifests
> adding file changes
> added 5 changesets with 5 changes to 5 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> % Try to rollback after a rebase (fail)
> no rollback information available
> @@ -141,6 +142,7 @@
> adding manifests
> adding file changes
> added 5 changesets with 5 changes to 5 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
>
> % Rebase with dest == default => same as no arguments (from 3 onto 7)
> @@ -151,6 +153,7 @@
> adding manifests
> adding file changes
> added 5 changesets with 5 changes to 5 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
>
> % Specify only source (from 4 onto 7)
> @@ -160,6 +163,7 @@
> adding manifests
> adding file changes
> added 4 changesets with 4 changes to 4 files (-1 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
>
> % Specify only dest (from 3 onto 6)
> @@ -170,6 +174,7 @@
> adding manifests
> adding file changes
> added 5 changesets with 5 changes to 5 files (+1 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
>
> % Specify only base (from 3 onto 7)
> @@ -179,6 +184,7 @@
> adding manifests
> adding file changes
> added 5 changesets with 5 changes to 5 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
>
> % Specify source and dest (from 4 onto 6)
> @@ -188,6 +194,7 @@
> adding manifests
> adding file changes
> added 4 changesets with 4 changes to 4 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
>
> % Specify base and dest (from 3 onto 6)
> @@ -197,4 +204,5 @@
> adding manifests
> adding file changes
> added 5 changesets with 5 changes to 5 files (+1 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> diff --git a/tests/test-rebase-pull.out b/tests/test-rebase-pull.out
> --- a/tests/test-rebase-pull.out
> +++ b/tests/test-rebase-pull.out
> @@ -17,6 +17,7 @@
> adding manifests
> adding file changes
> added 2 changesets with 2 changes to 2 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  3:L1
> |
> diff --git a/tests/test-rebase-scenario-global.out b/tests/test- 
> rebase-scenario-global.out
> --- a/tests/test-rebase-scenario-global.out
> +++ b/tests/test-rebase-scenario-global.out
> @@ -18,6 +18,7 @@
> adding manifests
> adding file changes
> added 5 changesets with 4 changes to 4 files (+1 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  5: B
> |
> @@ -38,6 +39,7 @@
> adding manifests
> adding file changes
> added 5 changesets with 4 changes to 4 files (+2 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  5: B
> |
> @@ -59,6 +61,7 @@
> adding manifests
> adding file changes
> added 3 changesets with 3 changes to 3 files (+1 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  4: C
> |
> @@ -78,6 +81,7 @@
> adding manifests
> adding file changes
> added 2 changesets with 2 changes to 2 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  4: F
> |
> @@ -96,6 +100,7 @@
> adding manifests
> adding file changes
> added 2 changesets with 1 changes to 1 files (-1 heads)
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @    5: E
> |\
> @@ -116,6 +121,7 @@
> adding manifests
> adding file changes
> added 3 changesets with 2 changes to 2 files
> +0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> rebase completed
> @  5: F
> |
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list