comparison mercurial/manifest.py @ 2831:0b50a580be36

Add manifestflags class
author Matt Mackall <mpm@selenic.com>
date Sun, 16 Jul 2006 02:59:20 -0500
parents fe1689273f84
children e196aa1df169
comparison
equal deleted inserted replaced
2601:00fc88b0b256 2831:0b50a580be36
8 from revlog import * 8 from revlog import *
9 from i18n import gettext as _ 9 from i18n import gettext as _
10 from demandload import * 10 from demandload import *
11 demandload(globals(), "array bisect struct") 11 demandload(globals(), "array bisect struct")
12 12
13 class manifestflags(dict):
14 def __init__(self, mapping={}):
15 dict.__init__(self, mapping)
16 def execf(self, f):
17 "test for executable in manifest flags"
18 return self.get(f, False)
19 def linkf(self, f):
20 "test for symlink in manifest flags"
21 return False
22 def set(self, f, execf=False, linkf=False):
23 self[f] = execf
24 def copy(self):
25 return manifestflags(dict.copy(self))
26
13 class manifest(revlog): 27 class manifest(revlog):
14 def __init__(self, opener, defversion=REVLOGV0): 28 def __init__(self, opener, defversion=REVLOGV0):
15 self.mapcache = None 29 self.mapcache = None
16 self.listcache = None 30 self.listcache = None
17 revlog.__init__(self, opener, "00manifest.i", "00manifest.d", 31 revlog.__init__(self, opener, "00manifest.i", "00manifest.d",
21 if node == nullid: return {} # don't upset local cache 35 if node == nullid: return {} # don't upset local cache
22 if self.mapcache and self.mapcache[0] == node: 36 if self.mapcache and self.mapcache[0] == node:
23 return self.mapcache[1] 37 return self.mapcache[1]
24 text = self.revision(node) 38 text = self.revision(node)
25 map = {} 39 map = {}
26 flag = {} 40 flag = manifestflags()
27 self.listcache = array.array('c', text) 41 self.listcache = array.array('c', text)
28 lines = text.splitlines(1) 42 lines = text.splitlines(1)
29 for l in lines: 43 for l in lines:
30 (f, n) = l.split('\0') 44 (f, n) = l.split('\0')
31 map[f] = bin(n[:40]) 45 map[f] = bin(n[:40])