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 %}