# HG changeset patch # User Matt Mackall # Date 1153037657 18000 # Node ID e196aa1df1695a936f39c996d5155695f9485075 # Parent 0b50a580be363519518fb361f8cd8e730c0abff6 Start using manifestflags methods diff --git a/mercurial/archival.py b/mercurial/archival.py --- a/mercurial/archival.py +++ b/mercurial/archival.py @@ -169,6 +169,6 @@ def archive(repo, dest, node, kind, deco write('.hg_archival.txt', 0644, 'repo: %s\nnode: %s\n' % (hex(repo.changelog.node(0)), hex(node))) for filename, filenode in mf: - write(filename, mff[filename] and 0755 or 0644, + write(filename, mff.execf(filename) and 0755 or 0644, repo.file(filename).read(filenode)) archiver.done() diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2026,7 +2026,8 @@ def manifest(ui, repo, rev=None): files.sort() for f in files: - ui.write("%40s %3s %s\n" % (hex(m[f]), mf[f] and "755" or "644", f)) + ui.write("%40s %3s %s\n" % (hex(m[f]), + mf.execf(f) and "755" or "644", f)) def merge(ui, repo, node=None, **opts): """Merge working directory with another revision diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -238,8 +238,8 @@ class dirstate(object): self.clear() umask = os.umask(0) os.umask(umask) - for f, mode in files: - if mode: + for f in files: + if files.execf(f): self.map[f] = ('n', ~umask, -1, 0) else: self.map[f] = ('n', ~umask & 0666, -1, 0) diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -481,9 +481,8 @@ class localrepository(object): for f in files: try: t = self.wread(f) - tm = util.is_exec(self.wjoin(f), mfm.get(f, False)) + mfm.set(f, util.is_exec(self.wjoin(f), mfm.execf(f))) r = self.file(f) - mfm[f] = tm (entry, fp1, fp2) = self.checkfilemerge(f, t, r, m1, m2) if entry: @@ -562,7 +561,7 @@ class localrepository(object): for f in commit: self.ui.note(f + "\n") try: - mf1[f] = util.is_exec(self.wjoin(f), mf1.get(f, False)) + mf1.set(f, util.is_exec(self.wjoin(f), mf1.execf(f))) t = self.wread(f) except IOError: self.ui.warn(_("trouble committing %s!\n") % f) @@ -806,7 +805,7 @@ class localrepository(object): else: t = self.file(f).read(m[f]) self.wwrite(f, t) - util.set_exec(self.wjoin(f), mf[f]) + util.set_exec(self.wjoin(f), mf.execf(f)) self.dirstate.update([f], "n") def copy(self, source, dest, wlock=None): @@ -1737,7 +1736,7 @@ class localrepository(object): for f in added + modified + unknown: mw[f] = "" - mfw[f] = util.is_exec(self.wjoin(f), mfw.get(f, False)) + mfw.set(f, util.is_exec(self.wjoin(f), mfw.execf(f))) if moddirstate and not wlock: wlock = self.wlock() @@ -1777,7 +1776,7 @@ class localrepository(object): self.ui.debug(_(" %s versions differ, resolve\n") % f) # merge executable bits # "if we changed or they changed, change in merge" - a, b, c = mfa.get(f, 0), mfw[f], mf2[f] + a, b, c = mfa.execf(f), mfw.execf(f), mf2.execf(f) mode = ((a^b) | (a^c)) ^ a merge[f] = (m1.get(f, nullid), m2[f], mode) s = 1 @@ -1796,9 +1795,9 @@ class localrepository(object): if not s and mfw[f] != mf2[f]: if force: self.ui.debug(_(" updating permissions for %s\n") % f) - util.set_exec(self.wjoin(f), mf2[f]) + util.set_exec(self.wjoin(f), mf2.execf(f)) else: - a, b, c = mfa.get(f, 0), mfw[f], mf2[f] + a, b, c = mfa.execf(f), mfw.execf(f), mf2.execf(f) mode = ((a^b) | (a^c)) ^ a if mode != b: self.ui.debug(_(" updating permissions for %s\n") @@ -1898,7 +1897,7 @@ class localrepository(object): self.ui.note(_("getting %s\n") % f) t = self.file(f).read(get[f]) self.wwrite(f, t) - util.set_exec(self.wjoin(f), mf2[f]) + util.set_exec(self.wjoin(f), mf2.execf(f)) if moddirstate: if branch_merge: self.dirstate.update([f], 'n', st_mtime=-1) diff --git a/mercurial/manifest.py b/mercurial/manifest.py --- a/mercurial/manifest.py +++ b/mercurial/manifest.py @@ -48,7 +48,7 @@ class manifest(revlog): return map def readflags(self, node): - if node == nullid: return {} # don't upset local cache + if node == nullid: return manifestflags() # don't upset local cache if not self.mapcache or self.mapcache[0] != node: self.read(node) return self.mapcache[2]