diff --git a/mercurial/patch.py b/mercurial/patch.py --- a/mercurial/patch.py +++ b/mercurial/patch.py @@ -467,6 +467,9 @@ def diff(repo, node1=None, node2=None, f if not modified and not added and not removed: return + # returns False if there was no rename between n1 and n2 + # returns None if the file was created between n1 and n2 + # returns the (file, node) present in n1 that was renamed to f in n2 def renamedbetween(f, n1, n2): r1, r2 = map(repo.changelog.rev, (n1, n2)) orig = f @@ -483,12 +486,12 @@ def diff(repo, node1=None, node2=None, f f = src[0] n2 = repo.changelog.parents(n2)[0] r2 = repo.changelog.rev(n2) - if orig == f: - return None cl = getchangelog(n1) m = getmanifest(cl[0]) if f not in m: return None + if f == orig: + return False return f, m[f] if node2: @@ -518,7 +521,7 @@ def diff(repo, node1=None, node2=None, f if src: f = src of = renamedbetween(f, node1, parent) - if of: + if of or of is None: return of elif src: cl = getchangelog(parent)[0]