martinvonz added inline comments.

INLINE COMMENTS

> context.py:701-705
> +class abstractfilectx(object):
> +    def data(self):
> +        raise NotImplementedError
> +
> +class basefilectx(abstractfilectx):

abstractfilectx doesn't seem referenced anywhere else, so just revert this 
part? Maybe you meant to make arbitraryfilectx extend it? That would make 
sense. If we do, I feel like we should implement the smart cmp() in this 
abstract base class to avoid the ugly asymmetry in the implementation otherwise 
(a.cmp(b) might be faster or slower than b.cmp(a) and one might perhaps even 
crash?).

Perhaps we should even make it a top-level function so it will be easier to 
override by extensions that want to add their own subclasses? Something like:

  def filectxcmp(fctx1, fctx2):
      ...
  class abstractfilectx(object):
      def cmp(self, otherfctx): # don't override in subclasses, wrap 
filefctxcmp() instead
          return filectxcmp(fctx1, fctx2)

Maybe there's precedence for this kind of thing elsewhere in Mercurial? Surely 
at least elsewhere in Python.

Or maybe I'm just overthinking this and we're pretty sure all call sites will 
pass it as arbitraryfilectx.cmp(filectx) and not the other way around, so it 
won't be a problem in practice. I'm not even sure I got that right (and I don't 
know where overlayfilectx fits in), which seems like a sign that it's best to 
have a single cmp() method.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D674

To: phillco, #hg-reviewers
Cc: sid0, martinvonz, mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to