Pastebin

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(env-allura)root@h6v6014:/var/local/allura(tv/4142)$ git diff
diff --git a/ForgeSVN/forgesvn/model/svn.py b/ForgeSVN/forgesvn/model/svn.py
index 4a733ad..6787dc4 100644
--- a/ForgeSVN/forgesvn/model/svn.py
+++ b/ForgeSVN/forgesvn/model/svn.py
@@ -259,11 +259,18 @@ def refresh_commit_info(self, oid, seen_object_ids, lazy=True):
             else:
                 rhs_id = None
             if path.action in ('D', 'M', 'R'):
-                lhs_info = self._svn.info2(
-                    self._url + h.really_unicode(path.path),
-                    revision=self._revision(ci_doc.parent_ids[0]),
-                    recurse=False)[0][1]
-                lhs_id = self._obj_oid(ci_doc._id, lhs_info)
+                try:
+                    lhs_info = self._svn.info2(
+                        self._url + h.really_unicode(path.path),
+                        revision=self._revision(ci_doc.parent_ids[0]),
+                        recurse=False)[0][1]
+                    lhs_id = self._obj_oid(ci_doc._id, lhs_info)
+                except pysvn.ClientError:
+                    # pysvn will sometimes report new files as 'M'odified,
+                    # causing info2() to raise ClientError since the file
+                    # doesn't exist in the parent revision. Set lhs_id = None
+                    # to treat like a newly added file.
+                    lhs_id = None
             else:
                 lhs_id = None
             di.differences.append(dict(