mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
b62ef50278
Future patches will refactor the storage into a more abstract API. This is the initial stubs for that API.
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import os, shutil, time
|
|
import ioutil
|
|
from mercurial import util
|
|
from mercurial.i18n import _
|
|
from mercurial.node import hex
|
|
|
|
class basestore(object):
|
|
def __init__(self, ui, path, reponame, shared=False):
|
|
path = util.expandpath(path)
|
|
self.ui = ui
|
|
self._path = path
|
|
self._reponame = reponame
|
|
self._shared = shared
|
|
self._uid = os.getuid()
|
|
self._fetches = []
|
|
|
|
if shared:
|
|
if not os.path.exists(path):
|
|
oldumask = os.umask(0o002)
|
|
try:
|
|
os.makedirs(path)
|
|
|
|
groupname = self.ui.config("remotefilelog", "cachegroup")
|
|
if groupname:
|
|
gid = grp.getgrnam(groupname).gr_gid
|
|
if gid:
|
|
os.chown(cachepath, os.getuid(), gid)
|
|
os.chmod(cachepath, 0o2775)
|
|
finally:
|
|
os.umask(oldumask)
|
|
|
|
def addfetcher(self, fetchfunc):
|
|
self._fetches.append(fetchfunc)
|
|
|
|
def triggerfetches(self, keys):
|
|
for fetcher in self._fetches:
|
|
fetcher(keys)
|
|
|
|
def contains(self, keys):
|
|
pass
|
|
|