# HG changeset patch # User Sean Farley # Date 1531872982 25200 # Node ID 7375a9ab014943ee6265634bcb899fb4abe98cca # Parent 254361f727bdac74e37f1a342e901cb5799121aa 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. diff -r 254361f727bd -r 7375a9ab0149 hgext/largefiles/lfcommands.py --- 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(): diff -r 254361f727bd -r 7375a9ab0149 mercurial/context.py --- 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