Mercurial > hg
comparison mercurial/store.py @ 6892:dab95717058d
verify: check repo.store
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Wed, 13 Aug 2008 20:18:41 -0500 |
parents | fddef0602859 |
children | 40690d614ce6 |
comparison
equal
deleted
inserted
replaced
6891:22cb82433842 | 6892:dab95717058d |
---|---|
3 # Copyright 2008 Matt Mackall <mpm@selenic.com> | 3 # Copyright 2008 Matt Mackall <mpm@selenic.com> |
4 # | 4 # |
5 # This software may be used and distributed according to the terms | 5 # This software may be used and distributed according to the terms |
6 # of the GNU General Public License, incorporated herein by reference. | 6 # of the GNU General Public License, incorporated herein by reference. |
7 | 7 |
8 from i18n import _ | |
8 import os, stat, osutil, util | 9 import os, stat, osutil, util |
9 | 10 |
10 def _buildencodefun(): | 11 def _buildencodefun(): |
11 e = '_' | 12 e = '_' |
12 win_reserved = [ord(x) for x in '\\:*?"<>|'] | 13 win_reserved = [ord(x) for x in '\\:*?"<>|'] |
75 filetypes = ('.d', '.i') | 76 filetypes = ('.d', '.i') |
76 for f, size in _dirwalk(path, recurse): | 77 for f, size in _dirwalk(path, recurse): |
77 if (len(f) > 2) and f[-2:] in filetypes: | 78 if (len(f) > 2) and f[-2:] in filetypes: |
78 yield util.pconvert(f[striplen:]), size | 79 yield util.pconvert(f[striplen:]), size |
79 | 80 |
80 def _datafiles(self): | 81 def datafiles(self, reporterror=None): |
81 for x in self._revlogfiles('data', True): | 82 for x in self._revlogfiles('data', True): |
82 yield x | 83 yield x |
83 | 84 |
84 def walk(self): | 85 def walk(self): |
85 '''yields (direncoded filename, size)''' | 86 '''yields (direncoded filename, size)''' |
86 # yield data files first | 87 # yield data files first |
87 for x in self._datafiles(): | 88 for x in self.datafiles(): |
88 yield x | 89 yield x |
89 # yield manifest before changelog | 90 # yield manifest before changelog |
90 meta = util.sort(self._revlogfiles()) | 91 meta = util.sort(self._revlogfiles()) |
91 meta.reverse() | 92 meta.reverse() |
92 for x in meta: | 93 for x in meta: |
93 yield x | 94 yield x |
94 | 95 |
95 class directstore(_store): | 96 class directstore(_store): |
96 def __init__(self, path): | 97 def __init__(self, path): |
97 _store.__init__(self, path) | 98 _store.__init__(self, path) |
98 self.encodefn = lambda x: x | |
99 self.opener = util.opener(self.path) | 99 self.opener = util.opener(self.path) |
100 self.opener.createmode = self.createmode | 100 self.opener.createmode = self.createmode |
101 | 101 |
102 class encodedstore(_store): | 102 class encodedstore(_store): |
103 def __init__(self, path): | 103 def __init__(self, path): |
105 self.encodefn = encodefilename | 105 self.encodefn = encodefilename |
106 op = util.opener(self.path) | 106 op = util.opener(self.path) |
107 op.createmode = self.createmode | 107 op.createmode = self.createmode |
108 self.opener = lambda f, *args, **kw: op(self.encodefn(f), *args, **kw) | 108 self.opener = lambda f, *args, **kw: op(self.encodefn(f), *args, **kw) |
109 | 109 |
110 def _datafiles(self): | 110 def datafiles(self, reporterror=None): |
111 for f, size in self._revlogfiles('data', True): | 111 for f, size in self._revlogfiles('data', True): |
112 yield decodefilename(f), size | 112 try: |
113 yield decodefilename(f), size | |
114 except KeyError: | |
115 if not reporterror: | |
116 raise | |
117 reporterror(_("cannot decode filename '%s'") % f) | |
113 | 118 |
114 def join(self, f): | 119 def join(self, f): |
115 return os.path.join(self.path, self.encodefn(f)) | 120 return os.path.join(self.path, self.encodefn(f)) |
116 | 121 |
117 def encodefn(requirements): | 122 def encodefn(requirements): |