Mercurial > hg
diff hgext/bookmarks.py @ 7478:4c3e0ad58c5b
bookmarks: Adds support for a --non-bookmarked option to push
author | Stefan Rusek <stefan@rusek.org> |
---|---|
date | Fri, 05 Dec 2008 09:38:17 +0100 |
parents | 9737041646bc |
children | cae586246331 e80a734ba1fc |
line wrap: on
line diff
--- a/hgext/bookmarks.py Thu Nov 06 10:39:52 2008 +0100 +++ b/hgext/bookmarks.py Fri Dec 05 09:38:17 2008 +0100 @@ -17,6 +17,7 @@ ''' from mercurial.commands import templateopts, hex, short +from mercurial import extensions from mercurial.i18n import _ from mercurial import cmdutil, util, commands, changelog from mercurial.node import nullid, nullrev @@ -220,6 +221,24 @@ repo.__class__ = bookmark_repo +def pushnonbookmarked(orig, ui, repo, *args, **opts): + 'Call push with only the heads that are not bookmarked' + if opts.get('non_bookmarked'): + if opts.get('rev'): + heads = [repo.lookup(r) for r in opts.get('rev')] + else: + heads = repo.heads() + + markheads = parse(repo).values() + opts['rev'] = [head for head in heads if not(head in markheads)] + + orig(ui, repo, *args, **opts) + +def uisetup(ui): + 'Replace push with a decorator to provide --non-bookmarked option' + entry = extensions.wrapcommand(commands.table, 'push', pushnonbookmarked) + entry[1].append(('', 'non-bookmarked', None, _("push all heads that are not bookmarked"))) + cmdtable = { "bookmarks": (bookmark,