[PATCH 2 of 2 V9] update: fix bare --clean to work on new branch (issue5003) (BC)

Simon Farnsworth simonfar at fb.com
Wed Apr 13 07:51:08 EDT 2016


These two patches look good to me.

On 13/04/2016 12:29, liscju wrote:
> # HG changeset patch
> # User liscju <piotr.listkiewicz at gmail.com>
> # Date 1459834201 -7200
> #      Tue Apr 05 07:30:01 2016 +0200
> # Node ID a8cc72ea2f5d5d73bf51447eb18d1ccba48afdee
> # Parent  f5f2ade3ad9fa5ce6f4c908273c74d1228b03e0c
> update: fix bare --clean to work on new branch (issue5003) (BC)
>
> Before this commit bare update --clean on newly created branch
> updates to the parent commit, even if there are later commits
> on the parent commit's branch. Update to the latest head on the
> parent commit's branch instead.
>
> This seems reasonable as clean should discard uncommited changes,
> branch is one of them.
>
> diff -r f5f2ade3ad9f -r a8cc72ea2f5d mercurial/destutil.py
> --- a/mercurial/destutil.py	Tue Apr 05 06:53:33 2016 +0200
> +++ b/mercurial/destutil.py	Tue Apr 05 07:30:01 2016 +0200
> @@ -95,14 +95,24 @@ def _destupdatebranch(repo, clean, check
>       wc = repo[None]
>       movemark = node = None
>       currentbranch = wc.branch()
> -    if currentbranch in repo.branchmap():
> -        heads = repo.branchheads(currentbranch)
> +
> +    if clean:
> +        heads = repo.branchheads(repo['.'].branch())
>           if heads:
>               node = repo.revs('max(.::(%ln))', heads).first()
> -        if bookmarks.isactivewdirparent(repo):
> -            movemark = repo['.'].node()
> +            if currentbranch not in repo.branchmap():
> +                repo.ui.warn(_('uncommitted branch %s does not exist, '
> +                               'updating to the head of parent branch\n')
> +                             % currentbranch)
>       else:
> -        node = repo['.'].node()
> +        if currentbranch in repo.branchmap():
> +            heads = repo.branchheads(currentbranch)
> +            if heads:
> +                node = repo.revs('max(.::(%ln))', heads).first()
> +            if bookmarks.isactivewdirparent(repo):
> +                movemark = repo['.'].node()
> +        else:
> +            node = repo['.'].node()
>       return node, movemark, None
>
>   def _destupdatebranchfallback(repo, clean, check):
> diff -r f5f2ade3ad9f -r a8cc72ea2f5d tests/test-newbranch.t
> --- a/tests/test-newbranch.t	Tue Apr 05 06:53:33 2016 +0200
> +++ b/tests/test-newbranch.t	Tue Apr 05 07:30:01 2016 +0200
> @@ -391,3 +391,58 @@ We expect that bare update on new branch
>     commit: (new branch)
>     update: (current)
>     phases: 3 draft
> +
> +  $ cd ..
> +
> +We expect that update --clean discard changes in working directory,
> +and updates to the head of parent branch.
> +
> +  $ hg init updatebareclean
> +  $ cd updatebareclean
> +  $ hg update --clean
> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  $ touch a
> +  $ hg commit -A -m "a"
> +  adding a
> +  $ touch b
> +  $ hg commit -A -m "b"
> +  adding b
> +  $ touch c
> +  $ hg commit -A -m "c"
> +  adding c
> +  $ hg log
> +  changeset:   2:991a3460af53
> +  tag:         tip
> +  user:        test
> +  date:        Thu Jan 01 00:00:00 1970 +0000
> +  summary:     c
> +
> +  changeset:   1:0e067c57feba
> +  user:        test
> +  date:        Thu Jan 01 00:00:00 1970 +0000
> +  summary:     b
> +
> +  changeset:   0:3903775176ed
> +  user:        test
> +  date:        Thu Jan 01 00:00:00 1970 +0000
> +  summary:     a
> +
> +  $ hg update -r 1
> +  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
> +  $ hg branch new-branch
> +  marked working directory as branch new-branch
> +  (branches are permanent and global, did you want a bookmark?)
> +  $ echo "aa" >> a
> +  $ hg update --clean
> +  uncommitted branch new-branch does not exist, updating to the head of parent branch
> +  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  $ hg status
> +  $ hg branch
> +  default
> +  $ hg parent
> +  changeset:   2:991a3460af53
> +  tag:         tip
> +  user:        test
> +  date:        Thu Jan 01 00:00:00 1970 +0000
> +  summary:     c
> +
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.mercurial-2Dscm.org_mailman_listinfo_mercurial-2Ddevel&d=CwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=mEgSWILcY4c4W3zjApBQLA&m=biCr6swEDzC_fjWfGw77CPeAVUz02PUHKjSVkIEvH7M&s=_TuUp-YENMxPS8DjCXzz7oOI-004ZUCE8NdDVHqz3m0&e=
>

-- 
Simon Farnsworth


More information about the Mercurial-devel mailing list