author | Matt Mackall <mpm@selenic.com> |
Mon, 22 Oct 2012 17:23:31 -0500 | |
branch | stable |
changeset 17849 | 6da47b655d97 |
parent 17298 | 59c14bf5a48c |
child 21650 | a2c7ae21e8f4 |
permissions | -rw-r--r-- |
11367 | 1 |
# pushkey.py - dispatching for pushing and pulling keys |
2 |
# |
|
3 |
# Copyright 2010 Matt Mackall <mpm@selenic.com> |
|
4 |
# |
|
5 |
# This software may be used and distributed according to the terms of the |
|
6 |
# GNU General Public License version 2 or any later version. |
|
7 |
||
17075
28ed1c4511ce
obsolete: exchange obsolete marker over pushkey
Pierre-Yves.David@ens-lyon.org
parents:
15648
diff
changeset
|
8 |
import bookmarks, phases, obsolete |
13353
689bf32b3bbd
bookmarks: move pushkey functions into core
Matt Mackall <mpm@selenic.com>
parents:
11367
diff
changeset
|
9 |
|
11367 | 10 |
def _nslist(repo): |
11 |
n = {} |
|
12 |
for k in _namespaces: |
|
13 |
n[k] = "" |
|
17298
59c14bf5a48c
pushkey: do not exchange obsole markers if feature is disabled
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17075
diff
changeset
|
14 |
if not obsolete._enabled: |
59c14bf5a48c
pushkey: do not exchange obsole markers if feature is disabled
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17075
diff
changeset
|
15 |
n.pop('obsolete') |
11367 | 16 |
return n |
17 |
||
13353
689bf32b3bbd
bookmarks: move pushkey functions into core
Matt Mackall <mpm@selenic.com>
parents:
11367
diff
changeset
|
18 |
_namespaces = {"namespaces": (lambda *x: False, _nslist), |
15648
79cc89de5be1
phases: add basic pushkey support
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
13353
diff
changeset
|
19 |
"bookmarks": (bookmarks.pushbookmark, bookmarks.listbookmarks), |
79cc89de5be1
phases: add basic pushkey support
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
13353
diff
changeset
|
20 |
"phases": (phases.pushphase, phases.listphases), |
17075
28ed1c4511ce
obsolete: exchange obsolete marker over pushkey
Pierre-Yves.David@ens-lyon.org
parents:
15648
diff
changeset
|
21 |
"obsolete": (obsolete.pushmarker, obsolete.listmarkers), |
15648
79cc89de5be1
phases: add basic pushkey support
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
13353
diff
changeset
|
22 |
} |
11367 | 23 |
|
24 |
def register(namespace, pushkey, listkeys): |
|
25 |
_namespaces[namespace] = (pushkey, listkeys) |
|
26 |
||
27 |
def _get(namespace): |
|
28 |
return _namespaces.get(namespace, (lambda *x: False, lambda *x: {})) |
|
29 |
||
30 |
def push(repo, namespace, key, old, new): |
|
31 |
'''should succeed iff value was old''' |
|
32 |
pk = _get(namespace)[0] |
|
33 |
return pk(repo, key, old, new) |
|
34 |
||
35 |
def list(repo, namespace): |
|
36 |
'''return a dict''' |
|
37 |
lk = _get(namespace)[1] |
|
38 |
return lk(repo) |
|
39 |