10 from revlog import * |
10 from revlog import * |
11 from demandload import * |
11 from demandload import * |
12 demandload(globals(), "re lock urllib urllib2 transaction time socket") |
12 demandload(globals(), "re lock urllib urllib2 transaction time socket") |
13 demandload(globals(), "tempfile httprangereader bdiff") |
13 demandload(globals(), "tempfile httprangereader bdiff") |
14 demandload(globals(), "bisect select") |
14 demandload(globals(), "bisect select") |
15 |
|
16 def always(fn): |
|
17 return True |
|
18 |
15 |
19 class filelog(revlog): |
16 class filelog(revlog): |
20 def __init__(self, opener, path): |
17 def __init__(self, opener, path): |
21 revlog.__init__(self, opener, |
18 revlog.__init__(self, opener, |
22 os.path.join("data", path + ".i"), |
19 os.path.join("data", path + ".i"), |
414 f = f + "\0" + c |
411 f = f + "\0" + c |
415 e = struct.pack(">cllll", e[0], e[1], e[2], e[3], len(f)) |
412 e = struct.pack(">cllll", e[0], e[1], e[2], e[3], len(f)) |
416 st.write(e + f) |
413 st.write(e + f) |
417 self.dirty = 0 |
414 self.dirty = 0 |
418 |
415 |
419 def walk(self, files = None, match = always): |
416 def walk(self, files = None, match = util.always): |
420 self.read() |
417 self.read() |
421 dc = self.map.copy() |
418 dc = self.map.copy() |
422 # walk all files by default |
419 # walk all files by default |
423 if not files: files = [self.root] |
420 if not files: files = [self.root] |
424 def traverse(): |
421 def traverse(): |
452 elif self.ignore(fn): |
449 elif self.ignore(fn): |
453 continue |
450 continue |
454 if match(fn): |
451 if match(fn): |
455 yield fn |
452 yield fn |
456 |
453 |
457 def changes(self, files = None, match = always): |
454 def changes(self, files = None, match = util.always): |
458 self.read() |
455 self.read() |
459 dc = self.map.copy() |
456 dc = self.map.copy() |
460 lookup, changed, added, unknown = [], [], [], [] |
457 lookup, changed, added, unknown = [], [], [], [] |
461 |
458 |
462 for fn in self.walk(files, match): |
459 for fn in self.walk(files, match): |
838 self.dirstate.forget(remove) |
835 self.dirstate.forget(remove) |
839 |
836 |
840 if not self.hook("commit", node=hex(n)): |
837 if not self.hook("commit", node=hex(n)): |
841 return 1 |
838 return 1 |
842 |
839 |
843 def walk(self, rev = None, files = [], match = always): |
840 def walk(self, node = None, files = [], match = util.always): |
844 if rev is None: fns = self.dirstate.walk(files, match) |
841 if node: |
845 else: fns = filter(match, self.manifest.read(rev)) |
842 change = self.changelog.read(node) |
|
843 fns = filter(match, self.manifest.read(change[0])) |
|
844 else: |
|
845 fns = self.dirstate.walk(files, match) |
846 for fn in fns: yield fn |
846 for fn in fns: yield fn |
847 |
847 |
848 def changes(self, node1 = None, node2 = None, files = [], match = always): |
848 def changes(self, node1 = None, node2 = None, files = [], |
|
849 match = util.always): |
849 mf2, u = None, [] |
850 mf2, u = None, [] |
850 |
851 |
851 def fcmp(fn, mf): |
852 def fcmp(fn, mf): |
852 t1 = self.wfile(fn).read() |
853 t1 = self.wfile(fn).read() |
853 t2 = self.file(fn).revision(mf[fn]) |
854 t2 = self.file(fn).revision(mf[fn]) |
920 p = self.wjoin(f) |
921 p = self.wjoin(f) |
921 if not os.path.exists(p): |
922 if not os.path.exists(p): |
922 self.ui.warn("%s does not exist!\n" % f) |
923 self.ui.warn("%s does not exist!\n" % f) |
923 elif not os.path.isfile(p): |
924 elif not os.path.isfile(p): |
924 self.ui.warn("%s not added: mercurial only supports files currently\n" % f) |
925 self.ui.warn("%s not added: mercurial only supports files currently\n" % f) |
925 elif self.dirstate.state(f) == 'n': |
926 elif self.dirstate.state(f) in 'an': |
926 self.ui.warn("%s already tracked!\n" % f) |
927 self.ui.warn("%s already tracked!\n" % f) |
927 else: |
928 else: |
928 self.dirstate.update([f], "a") |
929 self.dirstate.update([f], "a") |
929 |
930 |
930 def forget(self, list): |
931 def forget(self, list): |