Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/hg.py @ 679:c11e9a6777ae
Actually move .hg into ignore
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 11 Jul 2005 10:28:20 -0800 |
parents | 6513ba7d858a |
children | 4b7b79d2db2c |
comparison
equal
deleted
inserted
replaced
678:0cfc5966b2c2 | 679:c11e9a6777ae |
---|---|
19 os.path.join("data", path + ".i"), | 19 os.path.join("data", path + ".i"), |
20 os.path.join("data", path + ".d")) | 20 os.path.join("data", path + ".d")) |
21 | 21 |
22 def read(self, node): | 22 def read(self, node): |
23 t = self.revision(node) | 23 t = self.revision(node) |
24 if not t.startswith('\1\n'): | 24 if t[:2] != '\1\n': |
25 return t | 25 return t |
26 s = t.find('\1\n', 2) | 26 s = t.find('\1\n', 2) |
27 return t[s+2:] | 27 return t[s+2:] |
28 | 28 |
29 def readmeta(self, node): | 29 def readmeta(self, node): |
30 t = self.revision(node) | 30 t = self.revision(node) |
31 if not t.startswith('\1\n'): | 31 if t[:2] != '\1\n': |
32 return t | 32 return t |
33 s = t.find('\1\n', 2) | 33 s = t.find('\1\n', 2) |
34 mt = t[2:s] | 34 mt = t[2:s] |
35 for l in mt.splitlines(): | 35 for l in mt.splitlines(): |
36 k, v = l.split(": ", 1) | 36 k, v = l.split(": ", 1) |
37 m[k] = v | 37 m[k] = v |
38 return m | 38 return m |
39 | 39 |
40 def add(self, text, meta, transaction, link, p1=None, p2=None): | 40 def add(self, text, meta, transaction, link, p1=None, p2=None): |
41 if meta or text.startswith('\1\n'): | 41 if meta or text[:2] == '\1\n': |
42 mt = "" | 42 mt = "" |
43 if meta: | 43 if meta: |
44 mt = [ "%s: %s\n" % (k, v) for k,v in meta.items() ] | 44 mt = [ "%s: %s\n" % (k, v) for k,v in meta.items() ] |
45 text = "\1\n" + "".join(mt) + "\1\n" + text | 45 text = "\1\n" + "".join(mt) + "\1\n" + text |
46 return self.addrevision(text, transaction, link, p1, p2) | 46 return self.addrevision(text, transaction, link, p1, p2) |
396 f = os.path.join(self.root, f) | 396 f = os.path.join(self.root, f) |
397 if os.path.isdir(f): | 397 if os.path.isdir(f): |
398 for dir, subdirs, fl in os.walk(f): | 398 for dir, subdirs, fl in os.walk(f): |
399 d = dir[len(self.root) + 1:] | 399 d = dir[len(self.root) + 1:] |
400 for sd in subdirs: | 400 for sd in subdirs: |
401 if sd == ".hg" or ignore(os.path.join(d, sd +'/')): | 401 if ignore(os.path.join(d, sd +'/')): |
402 subdirs.remove(sd) | 402 subdirs.remove(sd) |
403 for fn in fl: | 403 for fn in fl: |
404 fn = util.pconvert(os.path.join(d, fn)) | 404 fn = util.pconvert(os.path.join(d, fn)) |
405 yield fn | 405 yield fn |
406 else: | 406 else: |
434 | 434 |
435 # used to avoid circular references so destructors work | 435 # used to avoid circular references so destructors work |
436 def opener(base): | 436 def opener(base): |
437 p = base | 437 p = base |
438 def o(path, mode="r"): | 438 def o(path, mode="r"): |
439 if p.startswith("http://"): | 439 if p[:7] == "http://": |
440 f = os.path.join(p, urllib.quote(path)) | 440 f = os.path.join(p, urllib.quote(path)) |
441 return httprangereader.httprangereader(f) | 441 return httprangereader.httprangereader(f) |
442 | 442 |
443 f = os.path.join(p, path) | 443 f = os.path.join(p, path) |
444 | 444 |
463 class RepoError(Exception): pass | 463 class RepoError(Exception): pass |
464 | 464 |
465 class localrepository: | 465 class localrepository: |
466 def __init__(self, ui, path=None, create=0): | 466 def __init__(self, ui, path=None, create=0): |
467 self.remote = 0 | 467 self.remote = 0 |
468 if path and path.startswith("http://"): | 468 if path and path[:7] == "http://": |
469 self.remote = 1 | 469 self.remote = 1 |
470 self.path = path | 470 self.path = path |
471 else: | 471 else: |
472 if not path: | 472 if not path: |
473 p = os.getcwd() | 473 p = os.getcwd() |
502 self.ui.readconfig(self.opener("hgrc")) | 502 self.ui.readconfig(self.opener("hgrc")) |
503 except IOError: pass | 503 except IOError: pass |
504 | 504 |
505 def ignore(self, f): | 505 def ignore(self, f): |
506 if not self.ignorefunc: | 506 if not self.ignorefunc: |
507 bigpat = [] | 507 bigpat = ["^.hg/$"] |
508 try: | 508 try: |
509 l = file(self.wjoin(".hgignore")) | 509 l = file(self.wjoin(".hgignore")) |
510 for pat in l: | 510 for pat in l: |
511 if pat != "\n": | 511 if pat != "\n": |
512 p = util.pconvert(pat[:-1]) | 512 p = util.pconvert(pat[:-1]) |
516 self.ui.warn("ignoring invalid ignore" | 516 self.ui.warn("ignoring invalid ignore" |
517 + " regular expression '%s'\n" % p) | 517 + " regular expression '%s'\n" % p) |
518 else: | 518 else: |
519 bigpat.append(util.pconvert(pat[:-1])) | 519 bigpat.append(util.pconvert(pat[:-1])) |
520 except IOError: pass | 520 except IOError: pass |
521 if bigpat: | 521 |
522 s = "(?:%s)" % (")|(?:".join(bigpat)) | 522 s = "(?:%s)" % (")|(?:".join(bigpat)) |
523 r = re.compile(s) | 523 r = re.compile(s) |
524 self.ignorefunc = r.search | 524 self.ignorefunc = r.search |
525 else: | |
526 self.ignorefunc = lambda x: False | |
527 | 525 |
528 return self.ignorefunc(f) | 526 return self.ignorefunc(f) |
529 | 527 |
530 def hook(self, name, **args): | 528 def hook(self, name, **args): |
531 s = self.ui.config("hooks", name) | 529 s = self.ui.config("hooks", name) |