We need to handle when the object has been deleted.
authorJohn Arbash Meinel <john@arbash-meinel.com>
Thu, 12 Nov 2009 22:29:42 +0000 (16:29 -0600)
committerJohn Arbash Meinel <john@arbash-meinel.com>
Thu, 12 Nov 2009 22:29:42 +0000 (16:29 -0600)
revision_store.py

index 3aa0bdd927a5100185e848a9956764b8f0969dce..cd84e6a67339c6f2e2a3148c31ebc8ce925a6dab 100644 (file)
@@ -81,6 +81,17 @@ class _TreeShim(object):
                 old_ie = basis_inv[file_id]
             except errors.NoSuchId:
                 old_ie = None
+                if ie is None:
+                    raise AssertionError('How is both old and new None?')
+                    change = (file_id,
+                        (old_path, new_path),
+                        False,
+                        (False, False),
+                        (None, None),
+                        (None, None),
+                        (None, None),
+                        (None, None),
+                        )
                 change = (file_id,
                     (old_path, new_path),
                     True,
@@ -91,17 +102,28 @@ class _TreeShim(object):
                     (None, ie.executable),
                     )
             else:
-                content_modified = (ie.text_sha1 != old_ie.text_sha1
-                                    or ie.text_size != old_ie.text_size)
-                change = (file_id,
-                    (old_path, new_path),
-                    content_modified,
-                    (True, True),
-                    (old_ie.parent_id, ie.parent_id),
-                    (old_ie.name, ie.name),
-                    (old_ie.kind, ie.kind),
-                    (old_ie.executable, ie.executable),
-                    )
+                if ie is None:
+                    change = (file_id,
+                        (old_path, new_path),
+                        True,
+                        (True, False),
+                        (old_ie.parent_id, None),
+                        (old_ie.name, None),
+                        (old_ie.kind, None),
+                        (old_ie.executable, None),
+                        )
+                else:
+                    content_modified = (ie.text_sha1 != old_ie.text_sha1
+                                        or ie.text_size != old_ie.text_size)
+                    change = (file_id,
+                        (old_path, new_path),
+                        content_modified,
+                        (True, True),
+                        (old_ie.parent_id, ie.parent_id),
+                        (old_ie.name, ie.name),
+                        (old_ie.kind, ie.kind),
+                        (old_ie.executable, ie.executable),
+                        )
             yield change