[PATCH V11] update: fix bare --clean to work on new branch (issue5003) (BC)
Augie Fackler
raf at durin42.com
Tue May 24 11:28:20 EDT 2016
On Mon, May 23, 2016 at 07:39:55AM +0200, 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 880899828fc8bc6b30876425e87924e4fd8476ee
> # Parent bdba6a2015d0bc57c6e2beab25d138610dcbf360
> update: fix bare --clean to work on new branch (issue5003) (BC)
Code looks good, proposed behavior seems reasonable to me, but I'm not
comfortable taking it. CC'ing a couple of other reviewers to try and
get this landed for you. Thanks for sticking with this for so many
rounds of review!
>
> 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 --git a/mercurial/destutil.py b/mercurial/destutil.py
> --- a/mercurial/destutil.py
> +++ b/mercurial/destutil.py
> @@ -95,9 +95,16 @@ def _destupdatebranch(repo, clean, check
> wc = repo[None]
> movemark = node = None
> currentbranch = wc.branch()
> +
> + if clean and wc.p1():
> + currentbranch = repo['.'].branch()
> +
> if currentbranch in repo.branchmap():
> heads = repo.branchheads(currentbranch)
> if heads:
> + if clean:
> + repo.ui.warn(_('updating to the head of parent branch %s\n')
> + % currentbranch)
> node = repo.revs('max(.::(%ln))', heads).first()
> if bookmarks.isactivewdirparent(repo):
> movemark = repo['.'].node()
> diff --git a/tests/test-newbranch.t b/tests/test-newbranch.t
> --- a/tests/test-newbranch.t
> +++ b/tests/test-newbranch.t
> @@ -463,3 +463,57 @@ We need special handling for repositorie
> -1 new
>
> $ 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
> + updating to the head of parent branch default
> + 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://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list