[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