# summary this package implements a web frontend to hgfs, the mercurial file system. html pages are generated for the various views on mercurial repositories. the following pages are provided: - last commit message for each repository - links to often used files/information for a given repository, such man pages it contains, .b & .m files, the latest .tgz, command to clone the repository, etc. - rss feed of the previous two views - diff between any two revisions of a given repository - the man2html-formatted manual page of a given unprocessed man page in a given repository, for a given file - last n commit messages for a given repository, in short or long format # download the homepage of this software is at: http://www.ueber.net/code/r/hgweb # install make sure the packages "web", "scgid" and "textmangle" installed (see http://www.ueber.net/code/r/$packagename). make sure $ROOT is set. now type "mk" and then "mk install" to compile and install. next, install the files in /lib into your inferno installation. to generate diffs for file trees, hgweb uses a modified version of inferno's diff(1). it is called ndiff and can be created by applying the patch ndiff.diff or ndiff.udiff (in unified format) to inferno's appl/cmd/diff.b (be sure to copy that to the file name ndiff.b before running patch). the patch adds flag -n (which only does anything when -r is specified too), which treats absent files as /dev/null when calculating the diff. this shows the contents of added and removed files. # run running this can become quite complicated. first of all, hgweb needs to be started by scgid, see its documentation for usage information. second, hgweb assumes /n/hg holds all repositories. multiple hg/fs'en can easily be exported by styxlisten, and mounted using "mount -P", allowing you to restart the hg/fs'en+styxlisten without restarting the scgid. hgweb also links (on the webserver) to files named "../hg/$repository". the links in /lib/template/hgweb/* may have to be changed. also, files in that directory contain instructions specific to my own installation, so be sure to look through them. # licence & author this code is in the public domain. the code is written by mechiel lukkien, reachable at email@example.com. diff.b (to which ndiff.diff an ndiff.udiff can be applied) is copyrighted by vita nuova. the modification is in the public domain. # todo - the url's should be more repo-centric, not the current function-centric. - add a view that, given a repo+path, lists the revisions the file was changed in. one revision can have its changelog shown in full. - allow seeing patches files (not dirs, that is harder) of a revision too? need to replace max 1 absent file by /dev/null. - better error handling. the wrong error reasons might be given sometimes.