# HG changeset patch # User Vadim Gelfer # Date 2006-08-15 16:37:58 # Node ID cd7bbb19b96e962cc30478453bf1552dbf854bc1 # Parent 05f357b70cb07608e89819eba7852377ea270d40 # Parent 05257fd285918487533b8b585b85ed85ea5d2e48 merge with mpm. diff --git a/mercurial/filelog.py b/mercurial/filelog.py --- a/mercurial/filelog.py +++ b/mercurial/filelog.py @@ -65,6 +65,27 @@ class filelog(revlog): return (m["copy"], bin(m["copyrev"])) return False + def cmp(self, node, text): + """compare text with a given file revision""" + + # for renames, we have to go the slow way + if self.renamed(node): + t2 = self.read(node) + return t2 == text + + p1, p2 = self.parents(node) + h = hash(text, p1, p2) + + return h != node + + def makenode(self, node, text): + """calculate a file nodeid for text, descended or possibly + unchanged from node""" + + if self.cmp(node, text): + return hash(text, node, nullid) + return node + def annotate(self, node): def decorate(text, rev): diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -668,8 +668,7 @@ class localrepository(repo.repository): def fcmp(fn, mf): t1 = self.wread(fn) - t2 = self.file(fn).read(mf.get(fn, nullid)) - return cmp(t1, t2) + return self.file(fn).cmp(mf.get(fn, nullid), t1) def mfmatches(node): change = self.changelog.read(node) diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -87,7 +87,7 @@ def update(repo, node, branchmerge=False m2 = repo.manifest.read(m2n).copy() ma = repo.manifest.read(man) - if not forcemerge and not overwrite: + if not force: for f in unknown: if f in m2: t1 = repo.wread(f)