From 64daf52ec87249adbff3cc4f4885bf01c7658308 Mon Sep 17 00:00:00 2001 From: Jun Wu Date: Thu, 4 May 2017 09:25:20 -0700 Subject: [PATCH] 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 --- hgext3rd/lfs/blobstore.py | 29 ++++------------------------- tests/test-lfs.t | 2 +- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/hgext3rd/lfs/blobstore.py b/hgext3rd/lfs/blobstore.py index c4242ea8e4..4b16a7164e 100644 --- a/hgext3rd/lfs/blobstore.py +++ b/hgext3rd/lfs/blobstore.py @@ -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.""" diff --git a/tests/test-lfs.t b/tests/test-lfs.t index 41d54e7492..2c9a2b41d2 100644 --- a/tests/test-lfs.t +++ b/tests/test-lfs.t @@ -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