mercurial/pushkey.py
author Mads Kiilerich <madski@unity3d.com>
Fri, 19 Jul 2013 14:20:11 +0200
changeset 19889 3828b3e09462
parent 17298 59c14bf5a48c
child 21650 a2c7ae21e8f4
permissions -rw-r--r--
convert: remove unused and incorrect default handling for revmapfile destc is not a string and can thus not be os.path.join'ed. Convert would crash if we ended up there ... but we wouldn't because both the sinks (hg and subversion) sinks implement .revmapfile and "never" throws exceptions.

# pushkey.py - dispatching for pushing and pulling keys
#
# Copyright 2010 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

import bookmarks, phases, obsolete

def _nslist(repo):
    n = {}
    for k in _namespaces:
        n[k] = ""
    if not obsolete._enabled:
        n.pop('obsolete')
    return n

_namespaces = {"namespaces": (lambda *x: False, _nslist),
               "bookmarks": (bookmarks.pushbookmark, bookmarks.listbookmarks),
               "phases": (phases.pushphase, phases.listphases),
               "obsolete": (obsolete.pushmarker, obsolete.listmarkers),
              }

def register(namespace, pushkey, listkeys):
    _namespaces[namespace] = (pushkey, listkeys)

def _get(namespace):
    return _namespaces.get(namespace, (lambda *x: False, lambda *x: {}))

def push(repo, namespace, key, old, new):
    '''should succeed iff value was old'''
    pk = _get(namespace)[0]
    return pk(repo, key, old, new)

def list(repo, namespace):
    '''return a dict'''
    lk = _get(namespace)[1]
    return lk(repo)