You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by tv...@apache.org on 2013/07/07 06:29:40 UTC

[3/4] git commit: [#5103] ticket:396 Set HEAD when switching default branch

[#5103] ticket:396 Set HEAD when switching default branch


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

Branch: refs/heads/master
Commit: 19c7673683bc16f87a9021088f49a94244959150
Parents: a5680c0
Author: Igor Bondarenko <je...@gmail.com>
Authored: Mon Jul 1 09:43:46 2013 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Sun Jul 7 03:59:51 2013 +0000

----------------------------------------------------------------------
 Allura/allura/lib/repository.py                       |  2 +-
 Allura/allura/model/repository.py                     | 10 ++++++++++
 ForgeGit/forgegit/model/git_repo.py                   |  7 +++++++
 .../forgegit/tests/functional/test_controllers.py     | 14 ++++++++++----
 4 files changed, 28 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/19c76736/Allura/allura/lib/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/repository.py b/Allura/allura/lib/repository.py
index 7aa7399..95a3d54 100644
--- a/Allura/allura/lib/repository.py
+++ b/Allura/allura/lib/repository.py
@@ -221,7 +221,7 @@ class RepoAdminController(DefaultAdminController):
     @expose('jinja:allura:templates/repo/default_branch.html')
     def set_default_branch_name(self, branch_name=None, **kw):
         if (request.method == 'POST') and branch_name:
-            self.repo.default_branch_name = branch_name
+            self.repo.set_default_branch(branch_name)
             redirect(request.referer)
         else:
             return dict(app=self.app,

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/19c76736/Allura/allura/model/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/repository.py b/Allura/allura/model/repository.py
index 5492ef3..32cea30 100644
--- a/Allura/allura/model/repository.py
+++ b/Allura/allura/model/repository.py
@@ -386,6 +386,16 @@ class Repository(Artifact, ActivityObject):
     @property
     def head(self):
         return self._impl.head
+    def set_default_branch(self, name):
+        return self._impl.set_default_branch(name)
+
+    def _log(self, rev, skip, limit):
+        head = self.commit(rev)
+        if head is None: return
+        for _id in self.commitlog([head._id], skip, limit):
+            ci = head.query.get(_id=_id)
+            ci.set_context(self)
+            yield ci
 
     def init_as_clone(self, source_path, source_name, source_url):
         self.upstream_repo.name = source_name

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/19c76736/ForgeGit/forgegit/model/git_repo.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/model/git_repo.py b/ForgeGit/forgegit/model/git_repo.py
index 6081a55..0da371d 100644
--- a/ForgeGit/forgegit/model/git_repo.py
+++ b/ForgeGit/forgegit/model/git_repo.py
@@ -445,6 +445,13 @@ class GitImplementation(M.RepositoryImplementation):
     def tags(self):
         return [Object(name=t.name, object_id=t.commit.hexsha) for t in self._git.tags if t.is_valid()]
 
+    def set_default_branch(self, name):
+        if not name:
+            return
+        # HEAD should point to default branch
+        self._git.git.symbolic_ref('HEAD', 'refs/heads/%s' % name)
+        self._repo.default_branch_name = name
+        session(self._repo).flush(self._repo)
 
 class _OpenedGitBlob(object):
     CHUNK_SIZE=4096

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/19c76736/ForgeGit/forgegit/tests/functional/test_controllers.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/functional/test_controllers.py b/ForgeGit/forgegit/tests/functional/test_controllers.py
index 841d0fb..6646318 100644
--- a/ForgeGit/forgegit/tests/functional/test_controllers.py
+++ b/ForgeGit/forgegit/tests/functional/test_controllers.py
@@ -21,7 +21,7 @@ import os
 import shutil
 import tempfile
 
-from nose.tools import assert_equal
+from nose.tools import assert_equal, assert_in, assert_not_in
 import tg
 import pkg_resources
 from pylons import tmpl_context as c
@@ -356,10 +356,10 @@ class TestRootController(_TestCase):
 
     def test_default_branch(self):
         assert_equal(c.app.default_branch_name, 'master')
-        c.app.repo.default_branch_name = 'zz'
+        c.app.repo.set_default_branch('zz')
         assert_equal(c.app.default_branch_name, 'zz')
-        r = self.app.get('/p/test/src-git/').follow().follow()
-        assert '<span class="scm-branch-label">zz</span>' in r
+        c.app.repo.set_default_branch('master')
+        assert_equal(c.app.default_branch_name, 'master')
 
     def test_set_default_branch(self):
         r = self.app.get('/p/test/admin/src-git/set_default_branch_name')
@@ -369,6 +369,12 @@ class TestRootController(_TestCase):
         assert '<input type="text" name="branch_name" id="branch_name"  value="zz"/>' in r
         r = self.app.get('/p/test/src-git/').follow().follow()
         assert '<span class="scm-branch-label">zz</span>' in r
+        assert_in('<span>bad</span>', r)  # 'bad' is a file name which in zz, but not in master
+
+        self.app.post('/p/test/admin/src-git/set_default_branch_name', params={'branch_name':'master'})
+        r = self.app.get('/p/test/src-git/').follow().follow()
+        assert_not_in('<span>bad</span>', r)
+        assert_in('<span>README</span>', r)
 
 
 class TestRestController(_TestCase):