Switch to side-by-side view

--- a/Allura/allura/model/repository.py
+++ b/Allura/allura/model/repository.py
@@ -179,40 +179,17 @@
         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):
         '''
@@ -336,8 +313,8 @@
         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):
@@ -453,8 +430,11 @@
         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