[#7882] use null context manager, to remove duplication of merge_base and log lines
diff --git a/Allura/allura/lib/helpers.py b/Allura/allura/lib/helpers.py
index 36932a3..76e8db3 100644
--- a/Allura/allura/lib/helpers.py
+++ b/Allura/allura/lib/helpers.py
@@ -976,11 +976,11 @@ def notifications_disabled(project, disabled=True):
 
 
 @contextmanager
-def null_contextmanager(*args, **kw):
+def null_contextmanager(returning=None, *args, **kw):
     """A no-op contextmanager.
 
     """
-    yield
+    yield returning
 
 
 class exceptionless(object):
diff --git a/ForgeGit/forgegit/model/git_repo.py b/ForgeGit/forgegit/model/git_repo.py
index bb3b8d8..d08fe1f 100644
--- a/ForgeGit/forgegit/model/git_repo.py
+++ b/ForgeGit/forgegit/model/git_repo.py
@@ -653,15 +653,15 @@ def merge_request_commits(self, mr):
         """
         use_tmp_dir = tg.config.get('scm.merge_list.git.use_tmp_dir', False)
         use_tmp_dir = asbool(use_tmp_dir)
-        if not use_tmp_dir:
-            base = self.merge_base(mr)
-            return list(c.app.repo.log(
-                mr.downstream.commit_id,
-                exclude=base,
-                id_only=False))
-        with self._shared_clone(self._repo.full_fs_path) as tmp_repo:
-            base = tmp_repo.merge_base(mr)
-            return list(tmp_repo.log(
+
+        if use_tmp_dir:
+            ctx_mgr = self._shared_clone(self._repo.full_fs_path)
+        else:
+            ctx_mgr = h.null_contextmanager(returning=self)
+
+        with ctx_mgr as repo:
+            base = repo.merge_base(mr)
+            return list(repo.log(
                 [mr.downstream.commit_id],
                 exclude=[base],
                 id_only=False))