filectx: fix return of renamed
How is this not blowing up everywhere?
It seems that filelog.renamed has always returned False (incorrectly a
boolean) instead of the assumed None. Tracing through history, you need
to skip over my move of code in 2013 by annotating from
896193a9cab4^
and you can see the original code is from 2007 (
180a3eee4b75) and that
ab9fa7a85dd9 broke this by assuming renamed was a bool (instead of
None).
Refactoring memctx code later exposed this bug.
--- a/hgext/largefiles/lfcommands.py Wed Sep 19 00:23:02 2018 -0400
+++ b/hgext/largefiles/lfcommands.py Tue Jul 17 17:16:22 2018 -0700
@@ -209,6 +209,10 @@
if f in ctx.manifest():
fctx = ctx.filectx(f)
renamed = fctx.renamed()
+ if renamed is None:
+ # the code below assumes renamed to be a boolean or a list
+ # and won't quite work with the value None
+ renamed = False
renamedlfile = renamed and renamed[0] in lfiles
islfile |= renamedlfile
if 'l' in fctx.flags():
--- a/mercurial/context.py Wed Sep 19 00:23:02 2018 -0400
+++ b/mercurial/context.py Tue Jul 17 17:16:22 2018 -0700
@@ -1052,7 +1052,7 @@
renamed = self._filelog.renamed(self._filenode)
if not renamed:
- return renamed
+ return None
if self.rev() == self.linkrev():
return renamed