equal
deleted
inserted
replaced
209 for c in strutil.findall(path, '/'): |
209 for c in strutil.findall(path, '/'): |
210 pc = path[:c] |
210 pc = path[:c] |
211 self.dirs.setdefault(pc, 0) |
211 self.dirs.setdefault(pc, 0) |
212 self.dirs[pc] += delta |
212 self.dirs[pc] += delta |
213 |
213 |
214 def checkshadows(self, files): |
214 def checkinterfering(self, files): |
215 def prefixes(f): |
215 def prefixes(f): |
216 for c in strutil.rfindall(f, '/'): |
216 for c in strutil.rfindall(f, '/'): |
217 yield f[:c] |
217 yield f[:c] |
218 self.lazyread() |
218 self.lazyread() |
219 self.initdirs() |
219 self.initdirs() |
220 seendirs = {} |
220 seendirs = {} |
221 for f in files: |
221 for f in files: |
|
222 # shadows |
222 if self.dirs.get(f): |
223 if self.dirs.get(f): |
223 raise util.Abort(_('directory named %r already in dirstate') % |
224 raise util.Abort(_('directory named %r already in dirstate') % |
224 f) |
225 f) |
225 for d in prefixes(f): |
226 for d in prefixes(f): |
226 if d in seendirs: |
227 if d in seendirs: |
227 break |
228 break |
228 if d in self.map: |
229 if d in self.map: |
229 raise util.Abort(_('file named %r already in dirstate') % |
230 raise util.Abort(_('file named %r already in dirstate') % |
230 d) |
231 d) |
231 seendirs[d] = True |
232 seendirs[d] = True |
|
233 # disallowed |
|
234 if '\r' in f or '\n' in f: |
|
235 raise util.Abort(_("'\\n' and '\\r' disallowed in filenames")) |
232 |
236 |
233 def update(self, files, state, **kw): |
237 def update(self, files, state, **kw): |
234 ''' current states: |
238 ''' current states: |
235 n normal |
239 n normal |
236 m needs merging |
240 m needs merging |
240 if not files: return |
244 if not files: return |
241 self.lazyread() |
245 self.lazyread() |
242 self.markdirty() |
246 self.markdirty() |
243 if state == "a": |
247 if state == "a": |
244 self.initdirs() |
248 self.initdirs() |
245 self.checkshadows(files) |
249 self.checkinterfering(files) |
246 for f in files: |
250 for f in files: |
247 if state == "r": |
251 if state == "r": |
248 self.map[f] = ('r', 0, 0, 0) |
252 self.map[f] = ('r', 0, 0, 0) |
249 self.updatedirs(f, -1) |
253 self.updatedirs(f, -1) |
250 else: |
254 else: |