mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 17:27:53 +03:00
0d9f759213
Summary: Special command that fills optional metadata about infinitepush nodes. For now it's info about changed files + info about how many lines were added/removed. Since information is saved in json format it's easily extensible. It's a separate command so that we will be able to run it asynchronously: during infinitepush push separate `hg debugfillinfinitepushmetadata` process will be started. Push process won't wait for `debugfillinfinitepushmetadata` process. sqlindexapi will be implemented in the next diffs. Test Plan: arc unit Reviewers: #mercurial, quark Reviewed By: quark Subscribers: quark, mjpieters, medson, azich, #sourcecontrol Differential Revision: https://phabricator.intern.facebook.com/D5237547 Tasks: 19103180 Signature: t1:5237547:1497397211:569d1ffe3be37c8d14fb7e07e42cd085ad5686d4
71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
# Infinite push
|
|
#
|
|
# Copyright 2016 Facebook, Inc.
|
|
#
|
|
# This software may be used and distributed according to the terms of the
|
|
# GNU General Public License version 2 or any later version.
|
|
|
|
class indexapi(object):
|
|
"""Class that manages access to infinitepush index.
|
|
|
|
This class is a context manager and all write operations (like
|
|
deletebookmarks, addbookmark etc) should use `with` statement:
|
|
|
|
with index:
|
|
index.deletebookmarks(...)
|
|
...
|
|
"""
|
|
|
|
def __init__(self):
|
|
"""Initializes the metadata store connection."""
|
|
pass
|
|
|
|
def close(self):
|
|
"""Cleans up the metadata store connection."""
|
|
pass
|
|
|
|
def __enter__(self):
|
|
return self
|
|
|
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
pass
|
|
|
|
def addbundle(self, bundleid, nodesctx):
|
|
"""Takes a bundleid and a list of node contexts for each node
|
|
in that bundle and records that."""
|
|
raise NotImplementedError()
|
|
|
|
def addbookmark(self, bookmark, node):
|
|
"""Takes a bookmark name and hash, and records mapping in the metadata
|
|
store."""
|
|
raise NotImplementedError()
|
|
|
|
def addmanybookmarks(self, bookmarks):
|
|
"""Takes a dict with mapping from bookmark to hash and records mapping
|
|
in the metadata store."""
|
|
raise NotImplementedError()
|
|
|
|
def deletebookmarks(self, patterns):
|
|
"""Accepts list of bookmarks and deletes them.
|
|
"""
|
|
raise NotImplementedError()
|
|
|
|
def getbundle(self, node):
|
|
"""Returns the bundleid for the bundle that contains the given node."""
|
|
raise NotImplementedError()
|
|
|
|
def getnode(self, bookmark):
|
|
"""Returns the node for the given bookmark. None if it doesn't exist."""
|
|
raise NotImplementedError()
|
|
|
|
def getbookmarks(self, query):
|
|
"""Returns bookmarks that match the query"""
|
|
raise NotImplementedError()
|
|
|
|
def saveoptionaljsonmetadata(self, node, jsonmetadata):
|
|
"""Saves optional metadata for a given node"""
|
|
raise NotImplementedError()
|
|
|
|
class indexexception(Exception):
|
|
pass
|