Make context __eq__ handle arbitrary RHS values
authorBrendan Cully <brendan@kublai.com>
Mon, 27 Nov 2006 15:27:09 -0800
changeset 3715 6cb3aca69cdc
parent 3714 198173f3957c
child 3716 ab5600428b08
Make context __eq__ handle arbitrary RHS values
mercurial/context.py
mercurial/merge.py
--- a/mercurial/context.py	Mon Nov 27 15:13:01 2006 -0800
+++ b/mercurial/context.py	Mon Nov 27 15:27:09 2006 -0800
@@ -36,7 +36,10 @@
         return "<changectx %s>" % str(self)
 
     def __eq__(self, other):
-        return self._rev == other._rev
+        try:
+            return self._rev == other._rev
+        except AttributeError:
+            return False
 
     def __nonzero__(self):
         return self._rev != nullrev
@@ -176,7 +179,11 @@
         return "<filectx %s>" % str(self)
 
     def __eq__(self, other):
-        return self._path == other._path and self._changeid == other._changeid
+        try:
+            return (self._path == other._path
+                    and self._changeid == other._changeid)
+        except AttributeError:
+            return False
 
     def filectx(self, fileid):
         '''opens an arbitrary revision of the file without
--- a/mercurial/merge.py	Mon Nov 27 15:13:01 2006 -0800
+++ b/mercurial/merge.py	Mon Nov 27 15:27:09 2006 -0800
@@ -139,9 +139,9 @@
         ''' check if an apparent pair actually matches '''
         c2 = ctx(f2, man[f2])
         ca = c.ancestor(c2)
-        if c == ca or c2 == ca:
+        if not ca or c == ca or c2 == ca:
             return
-        if ca and ca.path() == c.path() or ca.path() == c2.path():
+        if ca.path() == c.path() or ca.path() == c2.path():
             copy[c.path()] = f2
             copy[f2] = c.path()