lfs: use lfsvfs in dummy store

Summary: This simplifies code a lot.

Test Plan: Updated existing test

Reviewers: #mercurial, rmcelroy

Reviewed By: rmcelroy

Subscribers: rmcelroy, mjpieters

Differential Revision: https://phabricator.intern.facebook.com/D5001837

Signature: t1:5001837:1493885337:eea8b5cba7234453b32eba46fd58b4d5904367bf
This commit is contained in:
Jun Wu 2017-05-04 09:25:20 -07:00
parent fb4cd9891d
commit 64daf52ec8
2 changed files with 5 additions and 26 deletions

View File

@ -1,9 +1,7 @@
from __future__ import absolute_import
import errno
import functools
import json
import os
from mercurial import (
error,
@ -170,30 +168,15 @@ class _dummyremote(object):
path = repo.ui.config('lfs', 'remotepath', None)
if path is None:
raise error.ProgrammingError('dummystore: must set "remotepath"')
try:
os.makedirs(path)
except OSError as exc:
if exc.errno == errno.EEXIST:
pass
else:
raise
self._storepath = path
fullpath = repo.vfs.join(path)
self.vfs = lfsutil.lfsvfs(fullpath)
def write(self, storeid, data):
fname = self.filename(storeid)
try:
os.makedirs(os.path.dirname(fname))
except OSError as exc:
if exc.errno == errno.EEXIST:
pass
else:
raise
with open(self.filename(storeid), 'w+') as fp:
with self.vfs(storeid.oid, 'wb', atomictemp=True) as fp:
fp.write(data)
def read(self, storeid):
with open(self.filename(storeid), 'r+') as fp:
return fp.read()
return self.vfs.read(storeid.oid)
def writebatch(self, storeids, fromstore, ui=None, total=None):
for id in storeids:
@ -205,10 +188,6 @@ class _dummyremote(object):
content = self.read(id)
tostore.write(id, content)
def filename(self, storeid):
filename = os.path.join(self._storepath, storeid.oid)
return filename
class _nullremote(object):
"""Null store storing blobs to /dev/null."""

View File

@ -202,7 +202,7 @@
# Test bypass
$ hg cat -r tip large --config lfs.remotepath=$TESTTMP/404 --config lfs.blobstore=cache/404
abort: No such file or directory: $TESTTMP/404/8e92251415339ae9b148c8da89ed5ec665905166a1ab11b09dca8fad83344738
abort: No such file or directory: $TESTTMP/404/8e/92251415339ae9b148c8da89ed5ec665905166a1ab11b09dca8fad83344738
[255]
$ hg cat -r tip large --config lfs.remotepath=$TESTTMP/404 --config lfs.blobstore=cache/404 --config lfs.bypass=1