X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=web%2Fbzrbrowse%2Fbzrbrowse.cgi;h=2e3bf3c8471c703e360a8c714dd5b3c0da4ad53a;hp=3be2f216cdab083f08ec0b540819022f16901b7a;hb=bb4b8b6b32f34faf27b1c8e2b380f2df84810693;hpb=b7cb6af18150e37c12a19e0fa5f4d8efdeae81ce;ds=sidebyside diff --git a/web/bzrbrowse/bzrbrowse.cgi b/web/bzrbrowse/bzrbrowse.cgi index 3be2f216..2e3bf3c8 100755 --- a/web/bzrbrowse/bzrbrowse.cgi +++ b/web/bzrbrowse/bzrbrowse.cgi @@ -21,16 +21,16 @@ config = { 'root': '/home/ccan/ccan', 'base_url': '/browse', - 'images_url': '/browse', + 'images_url': '', 'branch_url': 'http://ccan.ozlabs.org/repo', } -import os, sys +import os, sys, string from bzrlib.branch import Branch from bzrlib.errors import NotBranchError from bzrlib import urlutils, osutils -__version__ = '0.0.1' +__version__ = '0.0.1-rusty' class HTTPError(Exception): @@ -55,6 +55,7 @@ class BzrBrowse(object): icons = { 'file': 'file.png', 'directory': 'folder.png', + 'symlink': 'symlink.png', } page_tmpl = ''' @@ -147,12 +148,24 @@ code { background-color: #000; color: #FFF; font-size: 90%%;} linenumbers + '
' + escape_html(text) +
                 '
') + # Symlinks in ccan contain .., and bzr refuses to serve that. Simplify. + def squish(self, linkname): + result = [] + for elem in string.split(linkname, os.sep): + if elem == '..': + result = result[:-1] + else: + result.append(elem) + return string.join(result, os.sep) + def list_branch_directory(self, branch, path, relpath): tree = branch.basis_tree() file_id = tree.path2id(relpath) ie = tree.inventory[file_id] if ie.kind == 'file': return self.view_branch_file(tree, ie) + if ie.kind == 'symlink': + return self.list_branch_directory(branch, path, self.squish(osutils.dirname(relpath) + os.sep + ie.symlink_target)) entries = [] if path: entries.append({