changeset 6938:6fde53180c50

diffs: wrap vcs repo get_diff Refactor to get a single place for diff error handling outside the vcs lib.
author Mads Kiilerich <mads@kiilerich.com>
date Sun, 22 Oct 2017 00:42:12 +0200
parents 9491eb545fef
children 07f026cdf7ac
files kallithea/controllers/changeset.py kallithea/controllers/compare.py kallithea/controllers/pullrequests.py kallithea/lib/diffs.py
diffstat 4 files changed, 15 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/controllers/changeset.py	Sun Oct 22 00:42:12 2017 +0200
+++ b/kallithea/controllers/changeset.py	Sun Oct 22 00:42:12 2017 +0200
@@ -270,7 +270,7 @@
             context_lcl = get_line_ctx('', request.GET)
             ign_whitespace_lcl = get_ignore_ws('', request.GET)
 
-            raw_diff = c.db_repo_scm_instance.get_diff(cs1, cs2,
+            raw_diff = diffs.get_diff(c.db_repo_scm_instance, cs1, cs2,
                 ignore_whitespace=ign_whitespace_lcl, context=context_lcl)
             diff_limit = None if c.fulldiff else self.cut_off_limit
             file_diff_data = []
--- a/kallithea/controllers/compare.py	Sun Oct 22 00:42:12 2017 +0200
+++ b/kallithea/controllers/compare.py	Sun Oct 22 00:42:12 2017 +0200
@@ -266,7 +266,7 @@
 
         log.debug('running diff between %s and %s in %s',
                   rev1, c.cs_rev, org_repo.scm_instance.path)
-        raw_diff = org_repo.scm_instance.get_diff(rev1=rev1, rev2=c.cs_rev,
+        raw_diff = diffs.get_diff(org_repo.scm_instance, rev1=rev1, rev2=c.cs_rev,
                                       ignore_whitespace=ignore_whitespace,
                                       context=line_context)
 
--- a/kallithea/controllers/pullrequests.py	Sun Oct 22 00:42:12 2017 +0200
+++ b/kallithea/controllers/pullrequests.py	Sun Oct 22 00:42:12 2017 +0200
@@ -591,9 +591,8 @@
         log.debug('running diff between %s and %s in %s',
                   c.a_rev, c.cs_rev, org_scm_instance.path)
         try:
-            raw_diff = org_scm_instance.get_diff(rev1=safe_str(c.a_rev), rev2=safe_str(c.cs_rev),
-                                                ignore_whitespace=ignore_whitespace,
-                                                context=line_context)
+            raw_diff = diffs.get_diff(org_scm_instance, rev1=safe_str(c.a_rev), rev2=safe_str(c.cs_rev),
+                                      ignore_whitespace=ignore_whitespace, context=line_context)
         except ChangesetDoesNotExistError:
             raw_diff = _("The diff can't be shown - the PR revisions could not be found.")
         diff_processor = diffs.DiffProcessor(raw_diff or '', diff_limit=diff_limit)
--- a/kallithea/lib/diffs.py	Sun Oct 22 00:42:12 2017 +0200
+++ b/kallithea/lib/diffs.py	Sun Oct 22 00:42:12 2017 +0200
@@ -248,10 +248,19 @@
     old_raw_id = getattr(filenode_old.changeset, 'raw_id', repo.EMPTY_CHANGESET)
     new_raw_id = getattr(filenode_new.changeset, 'raw_id', repo.EMPTY_CHANGESET)
 
-    vcs_gitdiff = repo.get_diff(old_raw_id, new_raw_id, filenode_new.path,
-                                ignore_whitespace, context)
+    vcs_gitdiff = get_diff(repo, old_raw_id, new_raw_id, filenode_new.path,
+                           ignore_whitespace, context)
     return vcs_gitdiff
 
+
+def get_diff(scm_instance, rev1, rev2, path=None, ignore_whitespace=False, context=3):
+    """
+    A thin wrapper around vcs lib get_diff.
+    """
+    return scm_instance.get_diff(rev1, rev2, path=path,
+                                 ignore_whitespace=ignore_whitespace, context=context)
+
+
 NEW_FILENODE = 1
 DEL_FILENODE = 2
 MOD_FILENODE = 3