changeset 39726:7375a9ab0149

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.
author Sean Farley <sean@farley.io>
date Tue, 17 Jul 2018 17:16:22 -0700
parents 254361f727bd
children 6c8ceebce309
files hgext/largefiles/lfcommands.py mercurial/context.py
diffstat 2 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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