Mercurial > public > mercurial-scm > hg
diff mercurial/commands.py @ 8796:2bcef677a6c3
localrepo: remove 'closed' argument to heads(...) function
- repository heads are not associated with the closed attribute, so
remove it making the code in line with the concept.
- Fix functions that were calling heads with the parameter.
- Adjust webcommands.branches to include the concept of inactive
as well as open and closed branches
- Fix code and docstrings in commands to make the correct use of
closed branches & branch heads clearer
- Improve grammar of 'hg heads' help text (2nd submission)
this does not alter the cli for hg branches, that work is
still to be done
author | John Mulligan <phlogistonjohn@asynchrono.us> |
---|---|
date | Wed, 10 Jun 2009 19:11:49 -0400 |
parents | 708938509732 |
children | 14a0bdd59848 |
line wrap: on
line diff
--- a/mercurial/commands.py Mon Jun 08 20:02:44 2009 +0200 +++ b/mercurial/commands.py Wed Jun 10 19:11:49 2009 -0400 @@ -446,8 +446,12 @@ """ hexfunc = ui.debugflag and hex or short activebranches = [encoding.tolocal(repo[n].branch()) - for n in repo.heads(closed=False)] - branches = sorted([(tag in activebranches, repo.changelog.rev(node), tag) + for n in repo.heads()] + def testactive(tag, node): + realhead = tag in activebranches + open = node in repo.branchheads(tag, closed=False) + return realhead and open + branches = sorted([(testactive(tag, node), repo.changelog.rev(node), tag) for tag, node in repo.branchtags().items()], reverse=True) @@ -1302,17 +1306,22 @@ With no arguments, show all repository head changesets. - If branch names or revisions are given this will show the heads of - the specified branches or the branches those revisions are tagged - with. - Repository "heads" are changesets that don't have child changesets. They are where development generally takes place and are the usual targets for update and merge operations. - Branch heads are changesets that have a given branch tag, but have - no child changesets with that tag. They are usually where - development on a given branch takes place. + If one or more REV is given, the "branch heads" will be shown for + the named branch associated with that revision. The name of the + branch is called the revision's branch tag. + + Branch heads are revisions on a given named branch that do not have + any children on the same branch. A branch head could be a true head + or it could be the last changeset on a branch before a new branch + was created. If none of the branch heads are true heads, the branch + is considered inactive. + + If STARTREV is specified only those heads (or branch heads) that + are descendants of STARTREV will be displayed. """ if opts.get('rev'): start = repo.lookup(opts['rev']) @@ -1322,10 +1331,10 @@ hideinactive, _heads = opts.get('active'), None if not branchrevs: # Assume we're looking repo-wide heads if no revs were specified. - heads = repo.heads(start, closed=closed) + heads = repo.heads(start) else: if hideinactive: - _heads = repo.heads(start, closed=closed) + _heads = repo.heads(start) heads = [] visitedset = set() for branchrev in branchrevs: @@ -1335,7 +1344,9 @@ visitedset.add(branch) bheads = repo.branchheads(branch, start, closed=closed) if not bheads: - if branch != branchrev: + if not opts.get('rev'): + ui.warn(_("no open branch heads on branch %s\n") % branch) + elif branch != branchrev: ui.warn(_("no changes on branch %s containing %s are " "reachable from %s\n") % (branch, branchrev, opts.get('rev'))) @@ -3251,7 +3262,7 @@ ('c', 'closed', False, _('show normal and closed heads')), ] + templateopts, - _('[-r REV] [REV]...')), + _('[-r STARTREV] [REV]...')), "help": (help_, [], _('[TOPIC]')), "identify|id": (identify,