[#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))