diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -298,9 +298,18 @@ def children(repo, subset, x): return [r for r in subset if r in cs] def branch(repo, subset, x): - """``branch(set)`` - All changesets belonging to the branches of changesets in set. + """``branch(string or set)`` + All changesets belonging to the given branch or the branches of the given + changesets. """ + try: + b = getstring(x, '') + if b in repo.branchmap(): + return [r for r in subset if repo[r].branch() == b] + except error.ParseError: + # not a string, but another revspec, e.g. tip() + pass + s = getset(repo, range(len(repo)), x) b = set() for r in s: diff --git a/tests/test-branch-tag-confict.t b/tests/test-branch-tag-confict.t new file mode 100644 --- /dev/null +++ b/tests/test-branch-tag-confict.t @@ -0,0 +1,62 @@ +Initial setup. + + $ hg init repo + $ cd repo + $ touch thefile + $ hg ci -A -m 'Initial commit.' + adding thefile + +Create a tag. + + $ hg tag branchortag + +Create a branch with the same name as the tag. + + $ hg branch branchortag + marked working directory as branch branchortag + $ hg ci -m 'Create a branch with the same name as a tag.' + +This is what we have: + + $ hg log + changeset: 2:02b1af9b58c2 + branch: branchortag + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Create a branch with the same name as a tag. + + changeset: 1:2635c45ca99b + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Added tag branchortag for changeset f57387372b5d + + changeset: 0:f57387372b5d + tag: branchortag + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Initial commit. + +Update to the tag: + + $ hg up 'tag(branchortag)' + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg parents + changeset: 0:f57387372b5d + tag: branchortag + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Initial commit. + +Updating to the branch: + + $ hg up 'branch(branchortag)' + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg parents + changeset: 2:02b1af9b58c2 + branch: branchortag + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: Create a branch with the same name as a tag. +