log mercurial/hgweb/webutil.py @ 41774:2e2076c8c25f

age author description
Sat, 09 Feb 2019 22:50:53 -0800 Martin von Zweigbergk match: delete unused root and cwd arguments from {always,never,exact}() (API)
Wed, 06 Feb 2019 17:27:43 -0800 Martin von Zweigbergk patch: pass in context objects into diffhunks() (API)
Wed, 23 Jan 2019 17:26:00 -0800 Gregory Szorc hgweb: ensure template mapping keys are bytes
Thu, 11 Oct 2018 22:01:54 +0200 Gregory Szorc py3: convert diff opcode name to bytes
Sun, 23 Sep 2018 16:11:01 +0900 Yuya Nishihara hgweb: use scmutil.binnode() to translate None to wdir hash (issue5988)
Sun, 26 Aug 2018 22:18:09 +0900 Yuya Nishihara hgweb: do not audit URL path as working-directory path
Sat, 28 Jul 2018 21:19:24 +0900 Yuya Nishihara hgweb: mark all lambda template keywords as new-style function
Wed, 01 Aug 2018 13:00:45 -0700 Gregory Szorc global: use pycompat.xrange()
Fri, 06 Jul 2018 21:49:25 +0900 Yuya Nishihara diffutil: move the module out of utils package
Fri, 06 Jul 2018 21:35:47 +0900 Yuya Nishihara hgweb: pass ui to diffstatgen() explicitly
Sat, 23 Jun 2018 14:42:58 +0200 Boris Feld webutil: pass a diffopts object to context.diff
Tue, 22 May 2018 15:02:52 +0200 Boris Feld context: explicitly take diffopts in `context.diff` (API)
Tue, 26 Jun 2018 10:36:23 -0400 Augie Fackler cleanup: migrate from re.escape to stringutil.reescape
Thu, 14 Jun 2018 22:33:26 +0900 Yuya Nishihara templater: introduce filter() function to remove empty items from list
Sat, 09 Jun 2018 13:34:47 +0900 Yuya Nishihara templater: abstract truth testing to fix {if(list_of_empty_strings)}
Mon, 19 Mar 2018 00:23:20 +0900 Yuya Nishihara templater: abstract ifcontains() over wrapped types
Mon, 19 Mar 2018 00:16:12 +0900 Yuya Nishihara templater: abstract min/max away
Fri, 04 May 2018 12:43:15 +0900 Yuya Nishihara templater: resolve type of dict key in getmember()
Wed, 21 Mar 2018 11:30:21 +0900 Yuya Nishihara templater: promote getmember() to an interface of wrapped types
Mon, 14 May 2018 12:38:05 +0200 David Demelier config: rename allow_archive to allow-archive
Wed, 04 Apr 2018 00:21:52 +0900 Yuya Nishihara hgweb: drop unused argument 'tmpl' from webutil.diffstat()
Wed, 04 Apr 2018 00:20:47 +0900 Yuya Nishihara hgweb: use template context to render {diffstat}
Wed, 04 Apr 2018 00:19:37 +0900 Yuya Nishihara hgweb: wrap {diffstat} with mappedgenerator
Thu, 17 May 2018 12:23:38 -0700 Gregory Szorc hgweb: extract code for emitting multiple changelist records
Wed, 04 Apr 2018 21:17:55 +0900 Yuya Nishihara hgweb: drop unused argument 'tmpl' from webutil.compare()
Wed, 04 Apr 2018 21:17:10 +0900 Yuya Nishihara hgweb: convert {comparison} to a mappinggenerator with named template
Wed, 04 Apr 2018 21:14:30 +0900 Yuya Nishihara hgweb: rename 'context' argument of webutil.compare() to avoid name conflicts
Wed, 04 Apr 2018 00:08:10 +0900 Yuya Nishihara hgweb: convert comparison {lines} to a mappinggenerator with named template
Tue, 03 Apr 2018 23:57:00 +0900 Yuya Nishihara hgweb: move getblock() closure out of compare()
Tue, 03 Apr 2018 23:54:08 +0900 Yuya Nishihara hgweb: move compline() closure out of compare()
Tue, 03 Apr 2018 23:50:00 +0900 Yuya Nishihara hgweb: convert {diff} to a mappinggenerator with named template
Tue, 03 Apr 2018 23:43:41 +0900 Yuya Nishihara hgweb: use template context to render {lines} of {diff}
Tue, 03 Apr 2018 23:42:15 +0900 Yuya Nishihara hgweb: wrap {lines} of {diff} with mappedgenerator
Tue, 03 Apr 2018 23:38:19 +0900 Yuya Nishihara hgweb: move prettyprintlines() closure out of diffs()
Tue, 03 Apr 2018 23:34:55 +0900 Yuya Nishihara hgweb: remove unused argument 'tmpl' from listfilediffs()
Tue, 03 Apr 2018 23:33:54 +0900 Yuya Nishihara hgweb: use template context to render {files} of changelist entries
Tue, 03 Apr 2018 23:32:16 +0900 Yuya Nishihara hgweb: wrap {files} of changelist entries with mappedgenerator
Tue, 03 Apr 2018 23:31:11 +0900 Yuya Nishihara hgweb: use template context to render {files} of changesetentry()
Tue, 03 Apr 2018 23:29:11 +0900 Yuya Nishihara hgweb: wrap {files} of changesetentry() with mappedgenerator
Tue, 03 Apr 2018 23:25:32 +0900 Yuya Nishihara hgweb: extract generator of {files} from changesetentry()
Tue, 03 Apr 2018 22:58:33 +0900 Yuya Nishihara hgweb: wrap {instabilities} by hybridlist()
Tue, 03 Apr 2018 22:55:33 +0900 Yuya Nishihara hgweb: wrap {whyunstable} with mappinggenerator
Tue, 03 Apr 2018 22:54:36 +0900 Yuya Nishihara hgweb: wrap {succsandmarkers} with mappinggenerator
Mon, 02 Apr 2018 00:46:33 +0900 Yuya Nishihara hgweb: wrap {branches} and {entries} of branches with mappinggenerator
Mon, 02 Apr 2018 00:41:19 +0900 Yuya Nishihara hgweb: drop tmpl argument from webutil.showtag() and showbookmark()
Mon, 02 Apr 2018 00:39:26 +0900 Yuya Nishihara hgweb: wrap {changelogtag}, {changesettag}, and {changesetbookmark}
Mon, 02 Apr 2018 00:29:31 +0900 Yuya Nishihara hgweb: drop useless **args from webutil.showtag() and showbookmark()
Tue, 08 May 2018 19:00:01 +0800 Anton Shestakov hgweb: reuse graph node-related functions from templates
Mon, 02 Apr 2018 00:06:39 +0900 Yuya Nishihara hgweb: wrap {branch} and {changesetbranch} by hybridlist()
Mon, 02 Apr 2018 00:05:38 +0900 Yuya Nishihara hgweb: wrap {inbranch} by hybridlist()
Mon, 02 Apr 2018 00:04:53 +0900 Yuya Nishihara hgweb: wrap {branches} by hybridlist()
Mon, 02 Apr 2018 00:03:49 +0900 Yuya Nishihara hgweb: wrap {bookmarks} by hybridlist()
Mon, 02 Apr 2018 00:02:36 +0900 Yuya Nishihara hgweb: wrap {tags} by hybridlist()
Mon, 02 Apr 2018 00:00:29 +0900 Yuya Nishihara hgweb: wrap {rename} with mappinglist
Sun, 01 Apr 2018 23:50:34 +0900 Yuya Nishihara hgweb: convert _siblings to a factory function of mappinggenerator
Sun, 01 Apr 2018 23:47:43 +0900 Yuya Nishihara hgweb: extract a generator function of _siblings class
Sun, 01 Apr 2018 23:40:08 +0900 Yuya Nishihara hgweb: wrap {changenav} and {nav} with mappinglist
Sun, 01 Apr 2018 23:34:29 +0900 Yuya Nishihara hgweb: make revnav.gen() simply build a list of mappings by one pass
Sun, 01 Apr 2018 23:12:37 +0900 Yuya Nishihara hgweb: lift {sessionvars} to a wrapped type
Sun, 01 Apr 2018 23:03:58 +0900 Yuya Nishihara hgweb: make sessionvars class less dense
Sun, 01 Apr 2018 23:03:02 +0900 Yuya Nishihara hgweb: prefix private variables of sessionvars with '_'
Sun, 01 Apr 2018 22:41:49 +0900 Yuya Nishihara hgweb: wrap {archives} with mappinglist
Sun, 01 Apr 2018 22:40:15 +0900 Yuya Nishihara hgweb: forward archivelist() of hgweb to webutil
Sun, 01 Apr 2018 22:37:03 +0900 Yuya Nishihara hgweb: move archivelist() of hgwebdir to webutil
Sun, 01 Apr 2018 22:32:34 +0900 Yuya Nishihara hgweb: move archivespecs to webutil
Mon, 19 Mar 2018 20:23:27 +0900 Yuya Nishihara templatekw: fix return type of {succsandmarkers} (BC)
Wed, 04 Apr 2018 09:41:18 -0700 Martin von Zweigbergk hgweb: use revsymbol() for creating context from changeid
Tue, 03 Apr 2018 23:00:41 -0700 Martin von Zweigbergk hgweb: inline changeidctx()
Tue, 03 Apr 2018 21:50:42 -0700 Martin von Zweigbergk hgweb: drop support for "manifest" parameter
Thu, 15 Mar 2018 21:52:47 +0900 Yuya Nishihara templater: switch 'revcache' based on new mapping items
Thu, 22 Mar 2018 21:56:20 +0900 Yuya Nishihara stringutil: bulk-replace call sites to point to new module
Fri, 16 Mar 2018 23:01:51 +0900 Yuya Nishihara templatekw: stop using _showlist() which is about to be deprecated
Tue, 13 Mar 2018 22:18:06 +0900 Yuya Nishihara annotate: drop linenumber flag from fctx.annotate() (API)
Fri, 16 Mar 2018 21:39:32 +0900 Yuya Nishihara templater: use named function to expand template against mapping dict (API)
Mon, 26 Feb 2018 20:44:21 +0800 Anton Shestakov hgweb: explain instabilities of unstable changesets
Sat, 10 Mar 2018 19:57:08 -0800 Gregory Szorc hgweb: pass modern request type into various webutil functions (API)
Sat, 10 Mar 2018 19:46:54 -0800 Gregory Szorc hgweb: don't redundantly pass templater with requestcontext (API)
Sat, 10 Mar 2018 12:36:36 -0800 Gregory Szorc hgweb: perform all parameter lookup via qsparams
Sat, 10 Mar 2018 11:46:52 -0800 Gregory Szorc hgweb: use our new request object for "style" parameter
Sun, 04 Mar 2018 13:04:12 -0500 Augie Fackler hgweb: fix up trailing slash detection on Python 3
Sun, 04 Mar 2018 12:21:01 -0500 Augie Fackler webutil: some %d instead of %s love on ints
Sun, 25 Feb 2018 19:05:57 +0900 Yuya Nishihara templatekw: switch obsfate-related template keywords to new API
Fri, 22 Dec 2017 21:59:38 +0900 Yuya Nishihara hgweb: make templater mostly compatible with log templates
Mon, 26 Feb 2018 16:16:37 +0530 Pulkit Goyal py3: use pycompat.strkwargs to convert kwargs keys to str
Sat, 17 Feb 2018 01:11:48 -0500 Augie Fackler py3: get bytes-repr of network errors portably
Wed, 14 Feb 2018 16:06:54 +0530 Pulkit Goyal py3: add b'' to make sure regex pattern are bytes in hgweb/webutil.py
Wed, 14 Feb 2018 15:43:03 +0530 Pulkit Goyal py3: slice over bytes to prevent getting ascii values
Fri, 22 Dec 2017 21:25:46 +0800 Anton Shestakov hgweb: link to successors of obsoleted changesets
Tue, 21 Nov 2017 17:03:41 +0800 Anton Shestakov hgweb: display fate of obsolete changesets
Tue, 19 Dec 2017 16:27:24 -0500 Augie Fackler merge with stable
Sun, 17 Dec 2017 18:28:15 +0900 Yuya Nishihara hgweb: disable diff.noprefix option for diffstat stable
Fri, 08 Dec 2017 22:27:14 +0800 Anton Shestakov hgweb: rewrite `template = A and B or C` to be a proper ternary operator
Sun, 26 Nov 2017 13:29:18 +0800 Anton Shestakov hgweb: rename the main attribute of instabilities
Sun, 19 Nov 2017 13:18:54 +0800 Anton Shestakov context: add instabilities() method to basefilectx
Sat, 18 Nov 2017 11:58:57 +0800 Anton Shestakov context: add obsolete() method to basefilectx
Thu, 05 Oct 2017 21:20:08 +0200 Denis Laxalde diff: also yield file context objects in patch.trydiff() (API)
Mon, 16 Oct 2017 22:44:06 -0400 Augie Fackler webutil: use pycompat.bytestr() instead of str()
Sun, 01 Oct 2017 12:29:33 +0100 Gregory Szorc hgweb: use parsebool for parsing diff query string options
Sat, 30 Sep 2017 09:08:01 +0100 Gregory Szorc hgweb: query string arguments to control whitespace for annotate
Fri, 30 Jun 2017 03:45:52 +0200 Boris Feld configitems: register the 'web.style' config
Sat, 01 Apr 2017 12:24:59 +0200 Denis Laxalde mdiff: add a hunkinrange helper function
Thu, 30 Mar 2017 21:40:10 +0200 Denis Laxalde hgweb: prefix line id by ctx shortnode in filelog when patches are shown
Wed, 29 Mar 2017 12:07:07 +0200 Denis Laxalde hgweb: fix diff hunks filtering by line range in webutil.diffs()
Mon, 13 Mar 2017 15:15:49 +0100 Denis Laxalde hgweb: add a 'linerange' parameter to webutil.diffs()
Thu, 19 Jan 2017 17:41:00 +0100 Denis Laxalde hgweb: handle a "linerange" request parameter in filelog command
Mon, 13 Mar 2017 10:40:19 +0100 Denis Laxalde hgweb: handle "parity" internally in webutil.diffs()
Mon, 13 Mar 2017 12:40:14 -0700 Gregory Szorc py3: add __bool__ to every class defining __nonzero__
Wed, 15 Mar 2017 15:10:09 -0700 Pierre-Yves David hgweb: explicitly tests for None in webutil
Sun, 12 Mar 2017 21:52:17 -0700 Gregory Szorc hgweb: don't use mutable default argument value
Mon, 06 Mar 2017 09:28:33 +0100 Denis Laxalde hgweb: use patch.diffhunks in webutil.diffs to simplify the algorithm
Mon, 06 Mar 2017 09:44:39 +0100 Denis Laxalde hgweb: start enumerate at 1 in webutil.diffs's inner function prettyprintlines
Tue, 17 Jan 2017 17:25:48 +0100 Denis Laxalde hgweb: explictly pass basectx in webutil.diffs
Thu, 10 Nov 2016 02:13:19 -0800 Durham Goode manifest: remove last uses of repo.manifest
Sat, 08 Oct 2016 16:10:34 +0100 Jun Wu hgweb: make fctx.annotate a separated function so it could be wrapped
Mon, 16 May 2016 21:30:53 +0000 timeless py3: convert to next() function
Thu, 31 Mar 2016 18:09:09 +0800 Anton Shestakov hgweb: add parents to json-log (issue5074)
Fri, 13 Nov 2015 14:35:36 +0800 Anton Shestakov hgweb: move entry-preparing code from webcommands to webutils.commonentry()
Sat, 31 Oct 2015 22:07:40 +0900 Yuya Nishihara hgweb: use absolute_import
Tue, 10 Nov 2015 17:22:40 +0800 Anton Shestakov webutil: make _siblings into an object with __iter__ and __len__
Sun, 01 Nov 2015 14:00:14 +0900 Yuya Nishihara hgweb: do not import templatefilters.revescape and websub as symbol
Sun, 01 Nov 2015 13:58:32 +0900 Yuya Nishihara hgweb: alias ui module as uimod
Tue, 10 Nov 2015 23:02:59 +0800 Anton Shestakov hgweb: compute changeset parents and children for log pages lazily
Sat, 22 Aug 2015 15:40:33 -0700 Gregory Szorc hgweb: extract web substitutions table generation to own function
Tue, 01 Sep 2015 22:28:45 +0800 Anton Shestakov hgweb: move branchentries code from webcommands to webutil
Tue, 11 Aug 2015 13:19:42 +0800 Anton Shestakov style: adjust whitespaces in webutil.py
Sun, 12 Jul 2015 16:47:56 +0800 Anton Shestakov templates: introduce revescape filter for escaping symbolic revisions
Tue, 16 Jun 2015 02:07:25 +0800 Anton Shestakov hgweb: provide symrev (symbolic revision) property to the templates
Tue, 26 May 2015 22:58:30 +0800 Anton Shestakov hgweb: remove an extra call to nodebranchnodefault() in changesetentry()
Fri, 10 Apr 2015 22:34:12 -0400 Gregory Szorc hgweb: expose raw line numbers to templates
Tue, 31 Mar 2015 22:29:12 -0700 Gregory Szorc hgweb: add phase to {changeset} template
Thu, 12 Mar 2015 23:15:06 -0400 Matt Harbison hgweb: replace 'ctx._repo' with 'ctx.repo()'
Fri, 13 Mar 2015 17:00:06 -0400 Jordi GutiƩrrez Hermoso style: kill ersatz if-else ternary operators
Mon, 02 Mar 2015 15:07:18 -0800 Gregory Szorc hgweb: extract changeset template mapping generation to own function
Thu, 19 Feb 2015 19:32:06 +0800 Anton Shestakov hgweb: use introrev() for finding parents (issue4506)
Tue, 06 Jan 2015 20:14:52 -0800 Gregory Szorc hgweb: extract changelist entry generation into own function
Thu, 17 Apr 2014 09:36:08 +0900 FUJIWARA Katsunori hgweb: show as same parents as "hg parents -r REV FILE" in pages for file
Wed, 12 Mar 2014 13:20:04 -0400 Augie Fackler webutil: move from dict() construction to {} literals
Wed, 06 Nov 2013 18:19:04 -0500 Augie Fackler pathutil: tease out a new library to break an import cycle from canonpath use
Tue, 30 Apr 2013 13:53:49 +0200 Pierre-Yves David hgweb: handle filtered "0" rev in navigation stable
Tue, 30 Apr 2013 15:11:12 +0200 Pierre-Yves David hgweb: fix empty navigation detection stable
Wed, 30 Jan 2013 17:32:17 +0100 Pierre-Yves David hgweb: fix navigation label (issue3792) stable
Wed, 16 Jan 2013 14:19:28 +0100 Pierre-Yves David hgweb: ignore filtered revision in revnav
Thu, 10 Jan 2013 19:29:48 +0100 Pierre-Yves David hgweb: generate revnav in two phase
Wed, 16 Jan 2013 13:18:22 +0100 Pierre-Yves David hgweb: pass repo object to revnav construction
Mon, 14 Jan 2013 16:55:48 +0100 Pierre-Yves David hgweb: introduction a filerevnav subclass
Thu, 10 Jan 2013 19:09:32 +0100 Pierre-Yves David hgweb: simplify addition of "(0) navigation entry"
Mon, 14 Jan 2013 16:30:06 +0100 Pierre-Yves David hgweb: simplify the handling of empty repo
Thu, 10 Jan 2013 18:54:50 +0100 Pierre-Yves David hgweb: move hex creation into an object method
Thu, 10 Jan 2013 18:59:37 +0100 Pierre-Yves David hgweb: pass nodefunc to the revnav object
Tue, 15 Jan 2013 21:17:18 +0100 Pierre-Yves David hgweb: move revnavgen into an object
Thu, 10 Jan 2013 18:52:17 +0100 Pierre-Yves David hgweb: ensure _navseq yield strictly increasing numbers
Thu, 10 Jan 2013 18:47:48 +0100 Pierre-Yves David hgweb: better names for _navseq arguments
Thu, 10 Jan 2013 18:44:26 +0100 Pierre-Yves David hgweb: drop recursivity in _navseq
Tue, 15 Jan 2013 12:11:18 +0100 Pierre-Yves David hgweb: move the `seq` function out of the revnavgen scope
Mon, 14 Jan 2013 16:52:35 +0100 Pierre-Yves David hgweb: simplify return value creation in for navgen
Thu, 10 Jan 2013 18:55:50 +0100 Pierre-Yves David hgweb: do not access first changeset with a string
Wed, 12 Dec 2012 02:38:14 +0100 Mads Kiilerich hgweb: generate query strings with parameters sorted by key
Sun, 13 Jan 2013 21:36:35 +0100 Pierre-Yves David hgweb: document the revnavgen function
Mon, 12 Nov 2012 14:05:39 -0800 Weiwen hgweb: display diff for a changeset against any parents (issue2810)
Tue, 31 Jul 2012 14:14:15 +0200 wujek srujek hgweb: fixes traceback for invalid files by removing top-level template stable
Mon, 30 Jul 2012 11:02:10 +0200 Ross Lagerwall hgweb: avoid traceback when file or node parameters are missing stable
Sun, 08 Jul 2012 17:17:02 +0200 wujek srujek hgweb: side-by-side comparison functionality
Sun, 13 May 2012 14:04:04 +0200 Brodie Rao localrepo: add branchtip() method for faster single-branch lookups
Fri, 23 Mar 2012 01:31:31 +0100 Paul Boddie hgweb: add block numbers to diff regions and related links
Mon, 25 Jul 2011 15:38:46 -0500 Augie Fackler hgweb: move remaining hasattr calls to safehasattr
Sat, 11 Jun 2011 21:11:43 +0800 Steven Brown web: provide diff summary to the changeset page
Thu, 09 Jun 2011 01:15:49 +0800 Steven Brown web: provide the file number to the diffstat templates
Thu, 09 Jun 2011 01:14:22 +0800 Steven Brown web: include all files in the diffstat
Sat, 28 May 2011 14:44:45 +0800 Steven Brown web: provide diffstat to the changeset page
Sat, 30 Apr 2011 12:55:07 +0200 Alexander Solovyov drop {short,hex}(ctx.node()) calls in favor of ctx methods
Wed, 20 Apr 2011 21:41:41 +0200 Adrian Buehlmann move canonpath from util to scmutil
Sat, 12 Mar 2011 11:19:44 +0100 Alexander Solovyov hgweb: add display of bookmarks for changelog and changeset stable
Sun, 10 Oct 2010 10:42:44 -0500 Augie Fackler hgweb: fix hgweb_mod as well as hgwebdir_mod
Mon, 25 Jan 2010 00:05:27 -0600 Matt Mackall many, many trivial check-code fixups
Tue, 19 Jan 2010 22:45:09 -0600 Matt Mackall Merge with stable
Tue, 19 Jan 2010 22:20:08 -0600 Matt Mackall Update license to GPLv2+ stable
Sat, 16 Jan 2010 02:33:06 +0100 Nicolas Dumazet hgweb: changenav: separate pages before and after the current position
Wed, 26 Aug 2009 14:58:09 +0200 Dirkjan Ochtman hgweb: show diff header line in raw diffs
Sun, 26 Apr 2009 01:08:54 +0200 Martin Geisler updated license to be explicit about GPL version 2
Mon, 26 Jan 2009 15:52:10 +0100 Dirkjan Ochtman hgweb: expose sibling branches to templater
Mon, 19 Jan 2009 13:20:47 +0100 Dirkjan Ochtman hgweb: simplify parents/children generation code
Mon, 12 Jan 2009 10:42:31 -0600 Matt Mackall error: move repo errors
Wed, 12 Nov 2008 15:19:14 -0600 Matt Mackall linkrev: take a revision number rather than a hash
Fri, 07 Nov 2008 23:31:12 +0100 Dirkjan Ochtman hgweb: fix up the less/more links on the graph page
Mon, 03 Nov 2008 20:31:53 +0100 Dirkjan Ochtman hgweb: move another utility function into the webutil module
Mon, 03 Nov 2008 20:41:48 +0100 Dirkjan Ochtman hgweb: move the diffs() generator into webutil
Thu, 30 Oct 2008 09:46:45 +0100 Dirkjan Ochtman hgweb: pass more information about parent/child csets to templates
Thu, 26 Jun 2008 14:35:50 -0500 Matt Mackall add __len__ and __iter__ methods to repo and revlog
Thu, 26 Jun 2008 14:35:46 -0500 Matt Mackall use repo[changeid] to get a changectx
Mon, 31 Mar 2008 23:14:25 -0500 Matt Mackall hgweb: fix merge breakage
Mon, 31 Mar 2008 21:49:33 -0500 Matt Mackall hgweb: minor improvements for new web style
Sun, 30 Mar 2008 22:29:02 +0200 Benoit Boissinot fix bug introduced by 2540521dc7c1 (thanks pychecker)
Fri, 28 Mar 2008 19:40:44 +0100 Dirkjan Ochtman hgweb: refactor hgweb code
Fri, 28 Mar 2008 19:37:28 +0100 Dirkjan Ochtman hgweb: separate out utility functions