Mercurial > hg
annotate hgext/infinitepush/indexapi.py @ 41610:d683aca738cd
diffordiffstat: avoid looking up contexts twice
I'm not worried about performance; this is just simpler.
Differential Revision: https://phab.mercurial-scm.org/D5890
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Wed, 06 Feb 2019 22:32:50 -0800 |
parents | 03ff17a4bf53 |
children | 2372284d9457 |
rev | line source |
---|---|
37187
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
1 # Infinite push |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
2 # |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
3 # Copyright 2016 Facebook, Inc. |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
4 # |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
7 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
8 from __future__ import absolute_import |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
9 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
10 class indexapi(object): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
11 """Class that manages access to infinitepush index. |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
12 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
13 This class is a context manager and all write operations (like |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
14 deletebookmarks, addbookmark etc) should use `with` statement: |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
15 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
16 with index: |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
17 index.deletebookmarks(...) |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
18 ... |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
19 """ |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
20 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
21 def __init__(self): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
22 """Initializes the metadata store connection.""" |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
23 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
24 def close(self): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
25 """Cleans up the metadata store connection.""" |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
26 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
27 def __enter__(self): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
28 return self |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
29 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
30 def __exit__(self, exc_type, exc_val, exc_tb): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
31 pass |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
32 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
33 def addbundle(self, bundleid, nodesctx): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
34 """Takes a bundleid and a list of node contexts for each node |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
35 in that bundle and records that.""" |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
36 raise NotImplementedError() |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
37 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
38 def addbookmark(self, bookmark, node): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
39 """Takes a bookmark name and hash, and records mapping in the metadata |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
40 store.""" |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
41 raise NotImplementedError() |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
42 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
43 def addmanybookmarks(self, bookmarks): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
44 """Takes a dict with mapping from bookmark to hash and records mapping |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
45 in the metadata store.""" |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
46 raise NotImplementedError() |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
47 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
48 def deletebookmarks(self, patterns): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
49 """Accepts list of bookmarks and deletes them. |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
50 """ |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
51 raise NotImplementedError() |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
52 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
53 def getbundle(self, node): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
54 """Returns the bundleid for the bundle that contains the given node.""" |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
55 raise NotImplementedError() |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
56 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
57 def getnode(self, bookmark): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
58 """Returns the node for the given bookmark. None if it doesn't exist.""" |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
59 raise NotImplementedError() |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
60 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
61 def getbookmarks(self, query): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
62 """Returns bookmarks that match the query""" |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
63 raise NotImplementedError() |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
64 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
65 def saveoptionaljsonmetadata(self, node, jsonmetadata): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
66 """Saves optional metadata for a given node""" |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
67 raise NotImplementedError() |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
68 |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
69 class indexexception(Exception): |
03ff17a4bf53
infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
70 pass |