You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2015/05/25 17:49:38 UTC

[08/16] allura git commit: [#7836] ticket:739 Delegate MergeRequest._commits to repo implementation

[#7836] ticket:739 Delegate MergeRequest._commits to repo implementation

This way we can implement it for Hg, which is quite different from Git (merge
base + log approach doesn't work for it).


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/d1310c61
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/d1310c61
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/d1310c61

Branch: refs/heads/ib/1731
Commit: d1310c61cd9cde87067b32622978a7fe9aee7937
Parents: f0bede1
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Apr 21 10:53:50 2015 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Wed May 20 19:43:17 2015 +0000

----------------------------------------------------------------------
 Allura/allura/model/repository.py   | 18 +++++++-----------
 ForgeGit/forgegit/model/git_repo.py | 12 ++++++++++++
 ForgeSVN/forgesvn/model/svn.py      |  4 ----
 3 files changed, 19 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/d1310c61/Allura/allura/model/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/repository.py b/Allura/allura/model/repository.py
index 9162117..ec623a3 100644
--- a/Allura/allura/model/repository.py
+++ b/Allura/allura/model/repository.py
@@ -321,9 +321,9 @@ class RepositoryImplementation(object):
         """
         raise NotImplementedError('paged_diffs')
 
-    def merge_base(self, mr):
-        """Given MergeRequest :param mr: find common ancestor for the merge"""
-        raise NotImplementedError('merge_base')
+    def merge_request_commits(self, mr):
+        """Given MergeRequest :param mr: return list of commits to be merged"""
+        raise NotImplementedError('merge_request_commits')
 
 
 class Repository(Artifact, ActivityObject):
@@ -717,9 +717,9 @@ class Repository(Artifact, ActivityObject):
             self.set_default_branch(branch_name)
         return branch_name
 
-    def merge_base(self, mr):
-        """Given MergeRequest :param mr: find common ancestor for the merge"""
-        return self._impl.merge_base(mr)
+    def merge_request_commits(self, mr):
+        """Given MergeRequest :param mr: return list of commits to be merged"""
+        return self._impl.merge_request_commits(mr)
 
 
 class MergeRequest(VersionedArtifact, ActivityObject):
@@ -788,11 +788,7 @@ class MergeRequest(VersionedArtifact, ActivityObject):
 
     def _commits(self):
         with self.push_downstream_context():
-            base = c.app.repo.merge_base(self)
-            return list(c.app.repo.log(
-                self.downstream.commit_id,
-                exclude=base,
-                id_only=False))
+            return c.app.repo.merge_request_commits(self)
 
     @classmethod
     def upsert(cls, **kw):

http://git-wip-us.apache.org/repos/asf/allura/blob/d1310c61/ForgeGit/forgegit/model/git_repo.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/model/git_repo.py b/ForgeGit/forgegit/model/git_repo.py
index a0f3f5a..99c5afe 100644
--- a/ForgeGit/forgegit/model/git_repo.py
+++ b/ForgeGit/forgegit/model/git_repo.py
@@ -636,6 +636,18 @@ class GitImplementation(M.RepositoryImplementation):
         g.fetch(mr.app.repo.full_fs_path, mr.target_branch)
         return g.merge_base(mr.downstream.commit_id, 'FETCH_HEAD')
 
+    def merge_request_commits(self, mr):
+        """
+        Return list of commits to be merged
+
+        Must be called within mr.push_downstream_context()
+        """
+        base = self.merge_base(mr)
+        return list(mr.app.repo.log(
+            mr.downstream.commit_id,
+            exclude=base,
+            id_only=False))
+
 
 class _OpenedGitBlob(object):
     CHUNK_SIZE = 4096

http://git-wip-us.apache.org/repos/asf/allura/blob/d1310c61/ForgeSVN/forgesvn/model/svn.py
----------------------------------------------------------------------
diff --git a/ForgeSVN/forgesvn/model/svn.py b/ForgeSVN/forgesvn/model/svn.py
index 53b4190..cd410e3 100644
--- a/ForgeSVN/forgesvn/model/svn.py
+++ b/ForgeSVN/forgesvn/model/svn.py
@@ -91,10 +91,6 @@ class Repository(M.Repository):
     def rev_to_commit_id(self, rev):
         return self._impl.rev_parse(rev)
 
-    def merge_base(self, mr):
-        rev = self.latest(branch=mr.target_branch)
-        return rev._id if rev else self.head
-
 
 class SVNCalledProcessError(Exception):