# HG changeset patch # User John Mulligan # Date 1231987658 18000 # Node ID cce37dab7ad6e7f80fe9b44e827e2b3334faeadc # Parent 816b708f23af9cd8883463c8c7b8cda62a94c32f branch closing: mark closed branches with a 'close' extra Adds a --close-branch option to commit. When --close-branch is present the commit will mark the changeset with close=1 in the changeset extras field. If a regular changeset is added on top of a closed head the branch is no longer considered closed, and thus re-opened. diff -r 816b708f23af -r cce37dab7ad6 mercurial/commands.py --- a/mercurial/commands.py Wed Jan 14 21:47:38 2009 -0500 +++ b/mercurial/commands.py Wed Jan 14 21:47:38 2009 -0500 @@ -613,9 +613,13 @@ See 'hg help dates' for a list of formats valid for -d/--date. """ + extra = {} + if opts.get('close_branch'): + extra['close'] = 1 def commitfunc(ui, repo, message, match, opts): - return repo.commit(match.files(), message, opts.get('user'), opts.get('date'), - match, force_editor=opts.get('force_editor')) + return repo.commit(match.files(), message, opts.get('user'), + opts.get('date'), match, force_editor=opts.get('force_editor'), + extra=extra) node = cmdutil.commit(ui, repo, commitfunc, pats, opts) if not node: @@ -3134,6 +3138,8 @@ (commit, [('A', 'addremove', None, _('mark new/missing files as added/removed before committing')), + ('', 'close-branch', None, + _('mark a branch as closed, hiding it from the branch list')), ] + walkopts + commitopts + commitopts2, _('[OPTION]... [FILE]...')), "copy|cp": diff -r 816b708f23af -r cce37dab7ad6 mercurial/localrepo.py --- a/mercurial/localrepo.py Wed Jan 14 21:47:38 2009 -0500 +++ b/mercurial/localrepo.py Wed Jan 14 21:47:38 2009 -0500 @@ -763,6 +763,8 @@ match=None, force=False, force_editor=False, p1=None, p2=None, extra={}, empty_ok=False): wlock = lock = None + if extra.get("close"): + force = True if files: files = util.unique(files) try: @@ -837,6 +839,8 @@ user = wctx.user() text = wctx.description() + if branchname == 'default' and extra.get('close'): + raise util.Abort(_('closing the default branch is invalid')) p1, p2 = [p.node() for p in wctx.parents()] c1 = self.changelog.read(p1) c2 = self.changelog.read(p2)