# HG changeset patch # User FUJIWARA Katsunori # Date 2014-11-19 09:35:14 # Node ID 2ff394bbfa7446780c998576141d334702e6ae84 # Parent 83736508e98adf276ab7285ab4b022f5818eefa0 subrepo: replace "_calcfilehash" invocation by "vfs.tryread" "_calcfilehash" can be completely replaced by simple "vfs.tryread" invocation. def _calcfilehash(filename): data = '' if os.path.exists(filename): fd = open(filename, 'rb') data = fd.read() fd.close() return util.sha1(data).hexdigest() Building absolute path "absname" up by "self._repo.join" for files in "filelist" is avoided, because "vfs.tryread" does so internally. diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -566,9 +566,10 @@ class hgsubrepo(abstractsubrepo): # sort the files that will be hashed in increasing (likely) file size filelist = ('bookmarks', 'store/phaseroots', 'store/00changelog.i') yield '# %s\n' % _expandedabspath(remotepath) + vfs = self._repo.vfs for relname in filelist: - absname = os.path.normpath(self._repo.join(relname)) - yield '%s = %s\n' % (relname, _calcfilehash(absname)) + filehash = util.sha1(vfs.tryread(relname)).hexdigest() + yield '%s = %s\n' % (relname, filehash) def _getstorehashcachepath(self, remotepath): '''get a unique path for the store hash cache'''