You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2013/04/10 18:15:00 UTC

[1/2] git commit: [#5120] Fixed branches with / in them

Updated Branches:
  refs/heads/cj/5120 [created] 5a72eb233


[#5120] Fixed branches with / in them

Signed-off-by: Cory Johns <cj...@slashdotmedia.com>


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

Branch: refs/heads/cj/5120
Commit: 3fe91a25eb16dfcb38f0aab28dfb22d6de969764
Parents: fa5d7e0
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Wed Apr 10 15:51:56 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Apr 10 16:08:12 2013 +0000

----------------------------------------------------------------------
 Allura/allura/controllers/repository.py          |   25 +++++-----
 Allura/allura/model/repository.py                |   44 +++++------------
 ForgeGit/forgegit/controllers.py                 |    3 +-
 ForgeGit/forgegit/git_main.py                    |    2 +-
 ForgeGit/forgegit/tests/model/test_repository.py |    2 +-
 ForgeSVN/forgesvn/controllers.py                 |    4 +-
 ForgeSVN/forgesvn/model/svn.py                   |   17 ++-----
 ForgeSVN/forgesvn/svn_main.py                    |    2 +-
 requirements-sf.txt                              |    2 +-
 9 files changed, 36 insertions(+), 65 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3fe91a25/Allura/allura/controllers/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index bbfb307..dca0ceb 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -56,8 +56,7 @@ class RepoRootController(BaseController):
     def index(self, offset=0, branch=None, **kw):
         if branch is None:
             branch=c.app.default_branch_name
-        redirect(url(quote('%s%s/' % (
-                        branch, c.app.END_OF_REF_ESCAPE))))
+        redirect(c.app.repo.url_for_commit(branch, url_type='ref'))
 
     @with_trailing_slash
     @expose('jinja:allura:templates/repo/forks.html')
@@ -360,21 +359,23 @@ class RefsController(object):
         self.BranchBrowserClass = BranchBrowserClass
 
     @expose()
-    def _lookup(self, *parts):
-        parts = map(unquote, parts)
-        ref = []
-        while parts:
-            part = parts.pop(0)
-            ref.append(part)
-            if part.endswith(c.app.END_OF_REF_ESCAPE):
-                break
-        ref = '/'.join(ref)[:-1]
-        return self.BranchBrowserClass(ref), parts
+    def _lookup(self, ref, *remainder):
+        EOR = quote(c.app.END_OF_REF_ESCAPE)
+        if EOR in remainder:
+            i = remainder.index(quote(c.app.END_OF_REF_ESCAPE))
+            ref = '/'.join((ci,) + remainder[:i])
+            remainder = remainder[i+1:]
+        return self.BranchBrowserClass(ref), remainder
 
 class CommitsController(object):
 
     @expose()
     def _lookup(self, ci, *remainder):
+        EOR = quote(c.app.END_OF_REF_ESCAPE)
+        if EOR in remainder:
+            i = remainder.index(quote(c.app.END_OF_REF_ESCAPE))
+            ci = '/'.join((ci,) + remainder[:i])
+            remainder = remainder[i+1:]
         return CommitBrowser(ci), remainder
 
 class BranchBrowser(BaseController):

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3fe91a25/Allura/allura/model/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/repository.py b/Allura/allura/model/repository.py
index f33d446..4c85552 100644
--- a/Allura/allura/model/repository.py
+++ b/Allura/allura/model/repository.py
@@ -158,40 +158,17 @@ class RepositoryImplementation(object):
         tags = [t.name for t in self._repo.repo_tags if t.object_id == commit._id]
         return branches, tags
 
-    def url_for_symbolic(self, commit):
-        if isinstance(commit, basestring):
-            object_id = commit
-        else:
-            object_id = commit._id
-
-        if self._repo.commit(object_id).symbolic_ids:
-            rev = None
-            branches, tags = self._repo.commit(object_id).symbolic_ids
-            for branch in branches:
-                last_commit = self._repo.latest(branch)
-                if last_commit and (object_id == last_commit._id):
-                    rev = branch
-                    break
-
-            for tag in tags:
-                last_commit = self._repo.latest(tag)
-                if last_commit and (object_id == last_commit._id):
-                    rev = tag
-                    break
-
-            if rev:
-                object_id = quote(rev, safe='')
-
-        return '%sci/%s/' % (self._repo.url(), object_id)
-
-    def url_for_commit(self, commit):
+    def url_for_commit(self, commit, url_type='ci'):
         'return an URL, given either a commit or object id'
         if isinstance(commit, basestring):
             object_id = commit
         else:
             object_id = commit._id
 
-        return '%sci/%s/' % (self._repo.url(), object_id)
+        if '/' in object_id:
+            object_id = os.path.join(object_id, self._repo.app.END_OF_REF_ESCAPE)
+
+        return os.path.join(self._repo.url(), url_type, object_id) + '/'
 
     def _setup_paths(self, create_repo_dir=True):
         '''
@@ -315,8 +292,8 @@ class Repository(Artifact, ActivityObject):
         return self._impl.shorthand_for_commit(oid)
     def symbolics_for_commit(self, commit):
         return self._impl.symbolics_for_commit(commit)
-    def url_for_commit(self, commit):
-        return self._impl.url_for_commit(commit)
+    def url_for_commit(self, commit, url_type='ci'):
+        return self._impl.url_for_commit(commit, url_type)
     def compute_tree_new(self, commit, path='/'):
         return self._impl.compute_tree_new(commit, path)
     def commits(self, path=None, rev=None, skip=None, limit=None):
@@ -430,8 +407,11 @@ class Repository(Artifact, ActivityObject):
         for oid in self.commitlog([ci._id]): result += 1
         return result
 
-    def latest(self, branch='master'):
-        if self._impl is None: return None
+    def latest(self, branch=None):
+        if self._impl is None:
+            return None
+        if branch is None:
+            branch = self.app.default_branch_name
         try:
             return self.commit(branch)
         except: # pragma no cover

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3fe91a25/ForgeGit/forgegit/controllers.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/controllers.py b/ForgeGit/forgegit/controllers.py
index 4a8fab7..8cf1104 100644
--- a/ForgeGit/forgegit/controllers.py
+++ b/ForgeGit/forgegit/controllers.py
@@ -12,5 +12,4 @@ class BranchBrowser(repository.BranchBrowser):
         latest = c.app.repo.latest(branch=self._branch)
         if not latest:
             return dict(allow_fork=False, log=[])
-        redirect(c.app.repo._impl.url_for_symbolic(latest._id) + 'tree/')
-
+        redirect(c.app.repo.url_for_commit(self._branch) + 'tree/')

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3fe91a25/ForgeGit/forgegit/git_main.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/git_main.py b/ForgeGit/forgegit/git_main.py
index a7efc11..554ede7 100644
--- a/ForgeGit/forgegit/git_main.py
+++ b/ForgeGit/forgegit/git_main.py
@@ -33,7 +33,7 @@ class ForgeGitApp(RepositoryApp):
     """
     ordinal=2
     forkable=True
-    default_branch_name='ref/master'
+    default_branch_name='master'
 
     def __init__(self, project, config):
         super(ForgeGitApp, self).__init__(project, config)

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3fe91a25/ForgeGit/forgegit/tests/model/test_repository.py
----------------------------------------------------------------------
diff --git a/ForgeGit/forgegit/tests/model/test_repository.py b/ForgeGit/forgegit/tests/model/test_repository.py
index 5e771dc..95fdf2a 100644
--- a/ForgeGit/forgegit/tests/model/test_repository.py
+++ b/ForgeGit/forgegit/tests/model/test_repository.py
@@ -316,7 +316,7 @@ class TestGitCommit(unittest.TestCase):
 
     def test_url(self):
         assert self.rev.url().endswith('ca4a/')
-        assert self.repo._impl.url_for_symbolic(self.rev._id).endswith('master/'), self.repo._impl.url_for_symbolic(self.rev._id)
+        assert self.repo._impl.url_for_commit('master').endswith('master/'), self.repo._impl.url_for_commit('master')
 
     def test_committer_url(self):
         assert self.rev.committer_url is None

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3fe91a25/ForgeSVN/forgesvn/controllers.py
----------------------------------------------------------------------
diff --git a/ForgeSVN/forgesvn/controllers.py b/ForgeSVN/forgesvn/controllers.py
index 0a87b40..17b01f6 100644
--- a/ForgeSVN/forgesvn/controllers.py
+++ b/ForgeSVN/forgesvn/controllers.py
@@ -13,10 +13,10 @@ class BranchBrowser(repository.BranchBrowser):
     @expose('jinja:forgesvn:templates/svn/index.html')
     @with_trailing_slash
     def index(self, limit=None, page=0, count=0, **kw):
-        latest = c.app.repo.latest(branch=self._branch)
+        latest = c.app.repo.latest()
         if not latest or (latest._id.split(':')[1] == '1' and h.has_access(c.app, 'write')()):
             return dict(allow_fork=False, log=[])
-        redirect(c.app.repo._impl.url_for_symbolic(latest._id) + 'tree/')
+        redirect(c.app.repo.url_for_commit(c.app.default_branch_name) + 'tree/')
 
     @expose()
     def _lookup(self, rev, *remainder):

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3fe91a25/ForgeSVN/forgesvn/model/svn.py
----------------------------------------------------------------------
diff --git a/ForgeSVN/forgesvn/model/svn.py b/ForgeSVN/forgesvn/model/svn.py
index 2e18b2c..34630d5 100644
--- a/ForgeSVN/forgesvn/model/svn.py
+++ b/ForgeSVN/forgesvn/model/svn.py
@@ -162,23 +162,14 @@ class SVNImplementation(M.RepositoryImplementation):
     def shorthand_for_commit(self, oid):
         return '[r%d]' % self._revno(oid)
 
-    def url_for_symbolic(self, commit):
+    def url_for_commit(self, commit, url_type=None):
         if isinstance(commit, basestring):
             object_id = commit
         else:
             object_id = commit._id
-        if self._repo.latest()._id == object_id:
-            return '%sHEAD/' % self._repo.url()
-        return '%s%d/' % (
-            self._repo.url(), self._revno(object_id))
-
-    def url_for_commit(self, commit):
-        if isinstance(commit, basestring):
-            object_id = commit
-        else:
-            object_id = commit._id
-        return '%s%d/' % (
-            self._repo.url(), self._revno(object_id))
+        if ':' in object_id:
+            object_id = str(self._revno(object_id))
+        return os.path.join(self._repo.url(), object_id) + '/'
 
     def init(self, default_dirs=True, skip_special_files=False):
         fullname = self._setup_paths()

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3fe91a25/ForgeSVN/forgesvn/svn_main.py
----------------------------------------------------------------------
diff --git a/ForgeSVN/forgesvn/svn_main.py b/ForgeSVN/forgesvn/svn_main.py
index 2df8ea4..d90f022 100644
--- a/ForgeSVN/forgesvn/svn_main.py
+++ b/ForgeSVN/forgesvn/svn_main.py
@@ -40,7 +40,7 @@ class ForgeSVNApp(RepositoryApp):
     """
     ordinal=4
     forkable=False
-    default_branch_name=''
+    default_branch_name='HEAD'
 
     def __init__(self, project, config):
         super(ForgeSVNApp, self).__init__(project, config)

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3fe91a25/requirements-sf.txt
----------------------------------------------------------------------
diff --git a/requirements-sf.txt b/requirements-sf.txt
index 628e1e8..0fc28a6 100644
--- a/requirements-sf.txt
+++ b/requirements-sf.txt
@@ -4,7 +4,7 @@ akismet==0.2.0
 amqplib==0.6.1
 kombu==1.0.4
 coverage==3.5a1-20110413
-ForgeHg==0.1.6
+ForgeHg==0.1.7
 ForgePastebin==0.2.6
 mechanize==0.2.4
 MySQL-python==1.2.3c1


[2/2] git commit: [#5120] Only show first 10 branches, like with tags

Posted by jo...@apache.org.
[#5120] Only show first 10 branches, like with tags

Signed-off-by: Cory Johns <cj...@slashdotmedia.com>


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

Branch: refs/heads/cj/5120
Commit: 5a72eb233a314cf462e3cce380070acbbf616d55
Parents: 3fe91a2
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Wed Apr 10 16:14:45 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Apr 10 16:14:45 2013 +0000

----------------------------------------------------------------------
 Allura/allura/controllers/repository.py |    5 +++
 Allura/allura/lib/repository.py         |   41 ++++++++++++-------------
 Allura/allura/templates/repo/tags.html  |   10 +++---
 3 files changed, 30 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/5a72eb23/Allura/allura/controllers/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index dca0ceb..f2935a9 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -392,6 +392,11 @@ class BranchBrowser(BaseController):
     def tags(self, **kw):
         return dict(tags=c.app.repo.repo_tags)
 
+    @expose('jinja:allura:templates/repo/tags.html')
+    @with_trailing_slash
+    def branches(self, **kw):
+        return dict(title='Branches', tags=c.app.repo.branches)
+
     @expose()
     @with_trailing_slash
     def log(self, **kw):

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/5a72eb23/Allura/allura/lib/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/repository.py b/Allura/allura/lib/repository.py
index 79a6b33..dfcaf4f 100644
--- a/Allura/allura/lib/repository.py
+++ b/Allura/allura/lib/repository.py
@@ -80,13 +80,6 @@ class RepositoryApp(Application):
     def sidebar_menu(self):
         if not self.repo or self.repo.status != 'ready':
             return []
-        if self.default_branch_name:
-            default_branch_url = (
-                c.app.url
-                + url(quote(self.default_branch_name + self.END_OF_REF_ESCAPE))
-                + '/')
-        else:
-            default_branch_url = c.app.url
         links = [SitemapEntry('Browse Commits', c.app.url + 'commit_browser', ui_icon=g.icons['folder'])]
         if self.forkable and self.repo.status == 'ready':
             links.append(SitemapEntry('Fork', c.app.url + 'fork', ui_icon=g.icons['fork']))
@@ -118,27 +111,33 @@ class RepositoryApp(Application):
                         'Pending Merges',
                         self.repo.upstream_repo.name + 'merge-requests/',
                         small=pending_upstream_merges))
+        ref_url = self.repo.url_for_commit(self.default_branch_name, url_type='ref')
         if self.repo.branches:
             links.append(SitemapEntry('Branches'))
-            for b in self.repo.branches:
+            max_branches = 10
+            for b in self.repo.branches[:max_branches]:
                 links.append(SitemapEntry(
-                        b.name, url('%sci/%s/tree/' % (c.app.url, quote(b.name, safe=''))),
+                        b.name, self.repo.url_for_commit(b.name)+'tree/',
                         small=b.count))
+            if len(self.repo.branches) > max_branches:
+                links.append(
+                    SitemapEntry(
+                        'More Branches',
+                        ref_url + 'branches/',
+                        ))
         if self.repo.repo_tags:
             links.append(SitemapEntry('Tags'))
             max_tags = 10
-            for i, b in enumerate(self.repo.repo_tags):
-                if i < max_tags:
-                    links.append(SitemapEntry(
-                            b.name, url('%sci/%s/tree/' % (c.app.url, quote(b.name, safe=''))),
-                            small=b.count))
-                elif i == max_tags:
-                    links.append(
-                        SitemapEntry(
-                            'More Tags',
-                            default_branch_url+'tags/',
-                            ))
-                    break
+            for b in self.repo.repo_tags[:max_tags]:
+                links.append(SitemapEntry(
+                        b.name, self.repo.url_for_commit(b.name)+'tree/',
+                        small=b.count))
+            if len(self.repo.repo_tags) > max_tags:
+                links.append(
+                    SitemapEntry(
+                        'More Tags',
+                        ref_url + 'tags/',
+                        ))
         return links
 
     def install(self, project):

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/5a72eb23/Allura/allura/templates/repo/tags.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/repo/tags.html b/Allura/allura/templates/repo/tags.html
index 148c28f..8252733 100644
--- a/Allura/allura/templates/repo/tags.html
+++ b/Allura/allura/templates/repo/tags.html
@@ -2,18 +2,18 @@
 
 {% block title %}
   {% if c.app.repo %}
-    Tags: {{c.app.repo.name}}
+    {{title or 'Tags'}}: {{c.app.repo.name}}
   {% else %}
-    Tags
+    {{title or 'Tags'}}
   {% endif %}
 {% endblock %}
 
-{% block header %}{{c.app.config.options.mount_label}} Tags{% endblock %}
+{% block header %}{{c.app.config.options.mount_label}} {{title or 'Tags'}}{% endblock %}
 
 {% block content %}
   <div class="grid-19">
-  {% for b in c.app.repo.repo_tags %}
-    <a href="{{c.app.url}}?branch=ref/{{b.name}}">{{b.name}}</a><br>
+  {% for b in tags %}
+    <a href="{{c.app.repo.url_for_commit(b.name)}}tree/">{{b.name}}</a><br>
   {% endfor %}
   </div>
 {% endblock %}