# # # patch "AUTHORS" # from [b301bdd407ed963857caddb6bf3541ff8cbb6cb5] # to [efc3dd1070798deb1fc2a2312204cc2f9faf00d4] # # patch "ChangeLog" # from [c610f1d97877ada9166f4460fa57720c26ba5a38] # to [d9df66d5fec9528808a67df5ebab0bff47ff8bb2] # # patch "README" # from [440eec971e7bb61ccbb61634deb2729bb25931cd] # to [63f623bc846a84f58751bc2217eec55b4aec9be0] # # patch "about.psp" # from [95de33c94331c5d3305733a149381ca88733aa6e] # to [42a714e321427a5e58048ce2fd90bfa0d699e6f3] # # patch "authors.py" # from [b65323a7c2687ecac86cb754d6bb071daedae0d2] # to [0ed0661cf3ddf1b402a73dfc1ff0fccc64ad05f1] # # patch "branch.psp" # from [016f5daf53d8047dc6cd8e924c679f4105bfa410] # to [108c313ba4eea9134a05b39de84d38b89492522b] # # patch "headofbranch.psp" # from [a3561a6b2bbf54822d3d82621421f05e07fe49b0] # to [ee04b9ba0f293ad5058c65e065c411b48d5a9af6] # # patch "html.py" # from [65567f42bebe8cba7faf23471d7c8e6031bc50b5] # to [e671830a6dbe86055c8422412c55806f36e8b2d2] # # patch "manifest.psp" # from [9bfe0452e706fb8fd3f84c91b137061795e2686b] # to [783c5152b37268b96a803fa8490dcc0eb007d26a] # # patch "revision.psp" # from [82d35235b0c254d2ec2552d53b72f17242f462b1] # to [5149daa0704f81b0581d6ab9d7ee8fd24b0641cb] # # patch "viewmtn.py" # from [7cb5c6b1b1710bf2c0fa41e9631ae43b03424a35] # to [a071b2192e2092ec222ab0d59ef95efd1c9c81e6] # ============================================================ --- AUTHORS b301bdd407ed963857caddb6bf3541ff8cbb6cb5 +++ AUTHORS efc3dd1070798deb1fc2a2312204cc2f9faf00d4 @@ -6,4 +6,5 @@ Nathaniel Smith Bruce Stephens Lapo Luchini +David Reiss ============================================================ --- ChangeLog c610f1d97877ada9166f4460fa57720c26ba5a38 +++ ChangeLog d9df66d5fec9528808a67df5ebab0bff47ff8bb2 @@ -1,29 +1,40 @@ +2005-11-21 Grahame Bowland + * *DRAFT* + * release 0.05 + * requires Monotone 0.23 or greater + * new file browser + * branch view showing recent changes, including RSS support + * source highlighting file view + * much heavier use of "monotone automate stdio"; significant + reduction in number of "monotone" processes created to service + requests. + 2005-05-21 Grahame Bowland - * release 0.03 - * fileinbranch.psp&branch=net.angrygoats.interapplet&path=ChangeLog - links to version of file in HEAD - * tarofbranch.psp&branch=net.angrygoats.interapplet - links to tar of HEAD manifest - * now works with monotone 0.19 - * branches and tags pages split - * user interface improved, help added - * ancestry graph direction fixed (thanks to Bruce Stephens) - * ancestry graph much improved (thanks to Emile Snyder) - * ancestry graph colours nodes using an algorithm nicked - from monotone-viz (with tweaks from Matt Johnston) - * abbreviate hashes, clean up linking code. + * release 0.03 + * fileinbranch.psp&branch=net.angrygoats.interapplet&path=ChangeLog + links to version of file in HEAD + * tarofbranch.psp&branch=net.angrygoats.interapplet + links to tar of HEAD manifest + * now works with monotone 0.19 + * branches and tags pages split + * user interface improved, help added + * ancestry graph direction fixed (thanks to Bruce Stephens) + * ancestry graph much improved (thanks to Emile Snyder) + * ancestry graph colours nodes using an algorithm nicked + from monotone-viz (with tweaks from Matt Johnston) + * abbreviate hashes, clean up linking code. 2005-04-26 Grahame Bowland - * release 0.02 - * fixed bug where monotone processes were left running as childs - of Apache. - * changed the ancestry to be a directed graph - * added blue highlight on target revision + * release 0.02 + * fixed bug where monotone processes were left running as childs + of Apache. + * changed the ancestry to be a directed graph + * added blue highlight on target revision 2005-04-25 Grahame Bowland - * release 0.01 + * release 0.01 ============================================================ --- README 440eec971e7bb61ccbb61634deb2729bb25931cd +++ README 63f623bc846a84f58751bc2217eec55b4aec9be0 @@ -5,11 +5,14 @@ A web interface to monotone. See "LICENSE" for distribution terms. ViewMTN is Copyright 2005 Grahame Bowland. -The minimum version of monotone required is: 0.21 +The minimum version of monotone required is: 0.23 -For the graphs to work you'll need dotty installed. +For the graphs to work you'll need dotty installed - it is a +part of GraphViz. + http://www.research.att.com/sw/tools/graphviz/ -ViewMTN requires mod_python. See http://www.modpython.org/ +ViewMTN requires mod_python. + http://www.modpython.org/ When installing be sure to copy config.py.example to config.py, and then edit config.py (paying attention to the comments!) @@ -26,6 +29,20 @@ wrapper.py, which decides which function (or PSP file) should be called to handle the request. +(Note: recent versions of ViewMTN will not work at all if you are missing + the line above.) + +MacOS +----- + +I run ViewMTN on MacOS by using mod_python and apache2 compiled from source +using Darwin Ports: + http://darwinports.opendarwin.org/ +You should be able to install graphviz from Darwin Ports as well. + +The graphs seem to look terrible with the default fault from config.py.example; +I set the font to "Monaco" instead and it looks pretty good. + Bugs, suggestions, feedback --------------------------- @@ -35,5 +52,6 @@ In particular, please look at the TODO file. If you're interested in fixing any of the issues listed (or just adding extra TODO entries) -please go ahead. +please go ahead - perhaps let me know so I can keep track and let you +know if the item is already done but not committed. ============================================================ --- about.psp 95de33c94331c5d3305733a149381ca88733aa6e +++ about.psp 42a714e321427a5e58048ce2fd90bfa0d699e6f3 @@ -41,12 +41,22 @@

ViewMTN is written in Python and -runs under mod_python. Code -highlighting is done by use of +runs under mod_python. +

+ +

+Code highlighting via GNU Enscript. -Graph colour generation code taken from monotone-viz.

+

+Graphing via GraphViz. +

+ +

+Graph colour generation algorithm from monotone-viz with modifications from Matt Johnston. +

+ <% req.write(template.footer(info)) %> ============================================================ --- authors.py b65323a7c2687ecac86cb754d6bb071daedae0d2 +++ authors.py 0ed0661cf3ddf1b402a73dfc1ff0fccc64ad05f1 @@ -6,5 +6,6 @@ Nathaniel Smith Bruce Stephens Lapo Luchini +David Reiss ''' ============================================================ --- branch.psp 016f5daf53d8047dc6cd8e924c679f4105bfa410 +++ branch.psp 108c313ba4eea9134a05b39de84d38b89492522b @@ -127,10 +127,10 @@ ago = "%d minutes, %d seconds" % (minutes, seconds) if output == 'html': - style = "font-size: 130%%; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: black;" + style = "border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: black;" if idx != 0: style += "border-top-style: solid; border-top-width: 1px; border-top-color: black;" - req.write('%s ago: %s (%s, %s)\n' % (style, ago, quicklog, link("revision", id, "revision info"), link("manifest", id, "browse files"))) + req.write('%s ago: %s
(%s, %s)\n' % (style, ago, quicklog, link("revision", id, "revision info"), link("manifest", id, "browse files"))) req.write(certinfo) elif output == 'rss': req.write('\n') ============================================================ --- headofbranch.psp a3561a6b2bbf54822d3d82621421f05e07fe49b0 +++ headofbranch.psp ee04b9ba0f293ad5058c65e065c411b48d5a9af6 @@ -30,7 +30,8 @@ req.write(template.header(info)) %>

-The following head IDs are available. Please select one to view. +The following head IDs are available. Please select one to view. You might find the +<%= link("branch", branch, "recent changes") %> page for this branch helpful.

============================================================ --- html.py 65567f42bebe8cba7faf23471d7c8e6031bc50b5 +++ html.py e671830a6dbe86055c8422412c55806f36e8b2d2 @@ -74,7 +74,7 @@ for branch in info['branch_rss']: rv += '' % (urllib.quote(branch), hq(branch)) rv += '''
- Output generated by ViewMTN on %s. + Output generated by ViewMTN %s on %s. - ''' % (time.strftime("%a, %d %b %Y %H:%M:%S %Z", time.localtime())) + ''' % (release, time.strftime("%a, %d %b %Y %H:%M:%S %Z", time.localtime())) return rv ============================================================ --- manifest.psp 9bfe0452e706fb8fd3f84c91b137061795e2686b +++ manifest.psp 783c5152b37268b96a803fa8490dcc0eb007d26a @@ -153,14 +153,18 @@ tr.write('' % (icon_uri, urllib.quote(id), urllib.quote(subdir), hq(name))) for name, file_id, file in files: icon_uri = get_icon(file) + if icon_uri != None: + icon_code = '' % (icon_uri) + else: + icon_code = '' rev = file_to_rev.get(file, None) if not rev: - tr.write('' % (icon_uri, link("file", [revision_id, file], name))) + tr.write('' % (icon_code, link("file", [revision_id, file], name))) else: age, author, quicklog = revinfo[rev] author = hq(author or "").replace(' ', ' ') quicklog = hq(quicklog or "") - tr.write('' % (icon_uri, \ + tr.write('' % (icon_code, \ link("file", [id, file], name), \ link("revision", rev, (age or "").replace(' ', ' '), no_quote=True), author, \ ============================================================ --- revision.psp 82d35235b0c254d2ec2552d53b72f17242f462b1 +++ revision.psp 5149daa0704f81b0581d6ab9d7ee8fd24b0641cb @@ -54,7 +54,10 @@ ancestry_limit = ancestry_maximum ancestry_graph = mt.ancestry_graph(config.graphopts, id, ancestry_limit) -req.write(open(ancestry_graph['imagemap_file']).read()) +if os.access(ancestry_graph['imagemap_file'], os.R_OK): + req.write(open(ancestry_graph['imagemap_file']).read()) +else: + req.write('
Unable to access ancestry graph; perhaps graphviz could not be found?
') revision = mt.revision(id) ============================================================ --- viewmtn.py 7cb5c6b1b1710bf2c0fa41e9631ae43b03424a35 +++ viewmtn.py a071b2192e2092ec222ab0d59ef95efd1c9c81e6 @@ -1,3 +1,3 @@ +# the latest release; make sure to update this (note for Grahame) +release = "0.05" -release = ("ViewMTN", "0.04", "8e303b5fec1cae85e68ce516c4ffbc1a48c70c00") -
%s%s%s%s %s %s %s%s%s %s %s %s%s