{"thread":{"id":"27498","subject":"[RFC/PATCHv2 0/2] Starting work on man pages for gitweb and gitweb.conf (WIP)","startedAt":"2011-05-29T19:50:24Z","lastAt":"2011-05-29T20:58:39Z","messageCount":5,"participants":["Jakub Narebski","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"168949","messageId":"1306698626-32402-1-git-send-email-jnareb@gmail.com","threadId":"27498","inReplyTo":null,"subject":"[RFC/PATCHv2 0/2] Starting work on man pages for gitweb and gitweb.conf (WIP)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2011-05-29T19:50:24Z","receivedAt":"2011-05-29T19:50:24Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"This is very much work in progress.  \n\n1. The man page for /etc/gitweb.conf is modified, extended and\nimproved version of patch by Drew Northup from\n\n  \"[PATCH/WIP] Starting work on a man page for /etc/gitweb.conf\"\n  http://thread.gmane.org/gmane.comp.version-control.git/173422\n\nDrew version was mostly pulled directly from the README and INSTALL\nfiles of gitweb.  I have tried to incorporate comments in mentioned\nthread, and to group config variables by category.\n\n2. The man page for gitweb is slightly extended version of patch I\nhave sent to git mailing list as\n\n  \"[RFC/PATCH] gitweb: Starting work on a man page for gitweb (WIP)\"\n  http://thread.gmane.org/gmane.comp.version-control.git/173422/focus=173625\n\n\nNOTE that I have only tested that both generated manpages _looks_\n(halfway) reasonable.  I didn't check HTML output.\n\nThe major part that is left (besides extending both manpages with new\ninformation) is actually de-duplicate contents, i.e. delete those\nparts of gitweb/README and gitweb/INSTALL that were copied to those\nnew manpages.\n\nBoth of those are also available in 'gitweb/doc' branch in one of my\nrepositories:\n\n  git://repo.or.cz/git/jnareb-git.git\n  git://github.com/jnareb/git.git\n\n\nShortlog:\n~~~~~~~~~\nDrew Northup (1):\n  Starting work on a man page for /etc/gitweb.conf (WIP)\n\nJakub Narebski (1):\n  gitweb: Starting work on a man page for gitweb (WIP)\n\nDiffstat:\n~~~~~~~~~\n Documentation/Makefile        |    4 +-\n Documentation/gitweb.conf.txt |  436 +++++++++++++++++++++++++++++++++++++++++\n Documentation/gitweb.txt      |  334 +++++++++++++++++++++++++++++++\n git.spec.in                   |    3 +\n gitweb/Makefile               |   14 ++\n 5 files changed, 789 insertions(+), 2 deletions(-)\n create mode 100644 Documentation/gitweb.conf.txt\n create mode 100644 Documentation/gitweb.txt\n\n-- \n1.7.5\n"},{"id":"168950","messageId":"1306698626-32402-2-git-send-email-jnareb@gmail.com","threadId":"27498","inReplyTo":"1306698626-32402-1-git-send-email-jnareb@gmail.com","subject":"[RFC/PATCHv2 1/2] Starting work on a man page for /etc/gitweb.conf (WIP)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2011-05-29T19:50:25Z","receivedAt":"2011-05-29T19:50:25Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"From: Drew Northup <drew.northup@maine.edu>\n\nThis is a work in progress. Much of what is in it has been pulled\ndirectly from the README and INSTALL files of gitweb. No effort has yet\nbeen made to de-duplicate any of this.\n\nTODO:\n  * Clean up README and INSTALL files\n  * Move most of gitweb's README and INSTALL into gitweb.txt and\n    gitweb.conf.txt, so that gitweb documentation can be easily viewed.\n  * Remove or rephrase redundant portions of original documentation\n  * A lot more...\n\nSigned-off-by: Drew Northup <drew.northup@maine.edu>\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\n Documentation/Makefile        |    2 +-\n Documentation/gitweb.conf.txt |  436 +++++++++++++++++++++++++++++++++++++++++\n git.spec.in                   |    3 +\n gitweb/Makefile               |   13 ++\n 4 files changed, 453 insertions(+), 1 deletions(-)\n create mode 100644 Documentation/gitweb.conf.txt\n\ndiff --git a/Documentation/Makefile b/Documentation/Makefile\nindex 36989b7..74ed959 100644\n--- a/Documentation/Makefile\n+++ b/Documentation/Makefile\n@@ -3,7 +3,7 @@ MAN1_TXT= \\\n \t\t$(wildcard git-*.txt)) \\\n \tgitk.txt git.txt\n MAN5_TXT=gitattributes.txt gitignore.txt gitmodules.txt githooks.txt \\\n-\tgitrepository-layout.txt\n+\tgitrepository-layout.txt gitweb.conf.txt\n MAN7_TXT=gitcli.txt gittutorial.txt gittutorial-2.txt \\\n \tgitcvs-migration.txt gitcore-tutorial.txt gitglossary.txt \\\n \tgitdiffcore.txt gitrevisions.txt gitworkflows.txt\ndiff --git a/Documentation/gitweb.conf.txt b/Documentation/gitweb.conf.txt\nnew file mode 100644\nindex 0000000..34f65fa\n--- /dev/null\n+++ b/Documentation/gitweb.conf.txt\n@@ -0,0 +1,436 @@\n+gitweb.conf(5)\n+==============\n+\n+NAME\n+----\n+gitweb.conf - Gitweb configuration file\n+\n+SYNOPSIS\n+--------\n+[verse]\n+'/etc/gitweb.conf'\n+'$GITWEBDIR/gitweb_config.perl'\n+\n+DESCRIPTION\n+-----------\n+The gitweb CGI script for viewing Git repositories over the web uses a\n+perl script fragment as its configuration file.  You can set variables\n+using \"`our $variable = value`\"; text from a \"#\" character until the\n+end of a line is ignored.  See *perlsyn*(1) for details.\n+\n+An example:\n+\n+    # gitweb configuration file for http://git.example.org\n+    #\n+    our $projectroot = \"/srv/git\"; # FHS recommendation\n+    our $site_name = 'My Gitweb';  # or 'localhost'\n+\n+\n+The configuration file is used to override the default settings that\n+were built into gitweb at the time 'gitweb.cgi' script was generated.\n+\n+While one could just alter the configuration settings in the gitweb\n+CGI itself, those changes would be lost upon upgrade.  Configuration\n+settings might also be placed into a file in the same directory as the\n+CGI script with the default name 'gitweb_config.perl' -- allowing\n+one to have multiple gitweb instances with different configurations by\n+the use of symlinks.\n+\n+\n+DISCUSSION\n+----------\n+The location of system-wide gitweb configuration file is defined at compile\n+time using the configuration value `GITWEB_CONFIG_SYSTEM` and defaults to\n+'/etc/gitweb.conf'.  The name of the per-instance configuration file is\n+defined in gitweb by `GITWEB_CONFIG`, and defaults to 'gitweb_config.perl'\n+(relative path means located in the same directory gitweb is installed).\n+\n+You can override location of both system-wide and per-instance configuration\n+file by setting respectively environmental variables `GITWEB_CONFIG_SYSTEM`\n+and `GITWEB_CONFIG` to non-empty value.\n+\n+Values defined in configuration files override built-in values found in the\n+gitweb CGI.\n+\n+*NOTE:* If per-instance configuration file ('gitweb_config.perl') exists,\n+then system-wide configuration file ('/etc/gitweb.conf') is _not used at\n+all_ !!!\n+\n+The syntax of the configuration files is that of Perl, as these files are\n+indeed handled as fragments of Perl code (the language that gitweb itself is\n+written in). Variables may be set using \"`our $variable = value`\"; text from\n+\"#\" character until the end of a line is ignored. See the *perlsyn*(1) man\n+page for more information.\n+\n+Actually using `our` qualifier in `our $variable = <value>;` is a safety\n+check: if newer gitweb does no longer use given variable, by using `our` we\n+won't get syntax errors.\n+\n+The default configuration with no configuration file at all may work\n+perfectly well for some installations.  Still, a configuration file is\n+useful for customizing or tweaking the behavior of gitweb in many ways, and\n+some optional features will not be present unless explicitly enabled using\n+the configurable `%features` variable.\n+\n+\n+CONFIGURATION VARIABLES\n+-----------------------\n+Some of configuration variables have their default values (embedded in CGI\n+file) set during building gitweb -- if that is the case, it is put in their\n+description.  See gitweb's 'INSTALL' file for instructions on building and\n+installing gitwen.\n+\n+Location of repositories\n+~~~~~~~~~~~~~~~~~~~~~~~~\n+Configuration variables described below control finding git repositories by\n+gitweb, and control display and access to repositories.\n+\n+$projectroot::\n+\tAbsolute filesystem path which will be prepended to project path;\n+\tthe path to repository is `$projectroot/$project`.  Set to\n+\t`$GITWEB_PROJECTROOT` during installation.  This variable has to be\n+\tset correctly for gitweb to find repositories.\n++\n+For example if `$projectroot` is set to \"/srv/git\" by putting the following\n+in gitweb config file:\n+----------------------------------------------------------------------------\n+our $projectroot = \"/srv/git\";\n+----------------------------------------------------------------------------\n+then\n+------------------------------------------------\n+http://git.example.com/gitweb.cgi?p=foo/bar.git\n+------------------------------------------------\n+or its path_info based equivalent\n+------------------------------------------------\n+http://git.example.com/gitweb.cgi/foo/bar.git\n+------------------------------------------------\n+will map to path '/srv/git/foo/bar.git' on filesystem.\n+\n+$projects_list::\n+\tPlain text file listing projects or name of directory\n+        to be scanned for projects.\n+\n+\tProject list files should list one project per line, with each line\n+        having the following format\n+-----------------------------------------------------------------------------\n+<URI-encoded filesystem path to repository> SP <URI-encoded repository owner>\n+-----------------------------------------------------------------------------\n+\n+The default value of this variable is determined by the `GITWEB_LIST`\n+makefile variable at installation time.  If this variable is empty, gitweb\n+will fall back to scanning the `$projectroot` directory for repositories.\n+\n+$export_ok::\n+\tShow repository only if this file exists (in repository).  Only\n+\teffective if this variable evaluates to true.  Can be set during\n+\tbuilding gitweb via `GITWEB_EXPORT_OK`.  [No default / Not set]\n+$export_auth_hook::\n+\tShow repository only if this subroutine returns true, when given as\n+\tthe only parameter the full path to the project.  Example:\n+----------------------------------------------------------------------------\n+our $export_auth_hook = sub { return -e \"$_[0]/git-daemon-export-ok\"; };\n+----------------------------------------------------------------------------\n+(though the above might be done by using \n+----------------------------------------------------------------------------\n+our $export_ok = \"git-daemon-export-ok\";\n+----------------------------------------------------------------------------\n+instead).\n+\n+$strict_export::\n+\tOnly allow viewing of repositories also shown on the overview page.\n+\tThis for example makes `$gitweb_export_ok` file decide if repository is\n+\tavailable and not only if it is shown.  If `$gitweb_list` points to\n+\tfile with list of project, only those repositories listed would be\n+\tavailable for gitweb.  Can be set during building gitweb via\n+\t`GITWEB_STRICT_EXPORT`.  [No default / Not set]\n+\n+Finding files\n+~~~~~~~~~~~~~\n+Those configuration variables tell gitweb where to find files.  Values of\n+those variables are paths on filesystem.  Of those only `$GIT` is required\n+to be (correctly) set for gitweb to be able to work; all the rest are\n+required only for extra configuration or extra features.\n+\n+$GIT::\n+\tCore git executable to use.  By default set to `$GIT_BINDIR/git`, which\n+\tin turn is by default set to `$(bindir)/git`.  If you use git from binary\n+\tpackage, set this to \"/usr/bin/git\".  This can just be \"git\" if your\n+\twebserver has a sensible PATH.  If you have multiple git versions installed\n+\tit can be used to choose which one to use.\n+$mimetypes_file::\n+\tFile to use for (filename extension based) guessing of MIME types before\n+\ttrying '/etc/mime.types'.  Path, if relative, is taken currently as\n+\trelative to the current git repository.  [Unset by default]\n+$highlight_bin::\n+\tPath to the highlight executable to use (must be the one from\n+\thttp://www.andre-simon.de due to assumptions about parameters and output).\n+\tUseful if highlight is not installed on your webserver's PATH.\n++\n+\t[Default: 'highlight']\n+\n+Links and their targets\n+~~~~~~~~~~~~~~~~~~~~~~~\n+Configuration variables described below configure some of gitweb links:\n+their target and their look (text or image), and where to find page\n+prerequisites (stylesheet, favicon, images, scripts).  Usually they are left\n+at their default values, with the possible exception of `@stylesheets`\n+variable.\n+\n+@stylesheets::\n+\tList of URIs of stylesheets (relative to base URI of a page). You\n+\tmight specify more than one stylesheet, for example use gitweb.css\n+\tas base, with site specific modifications in separate stylesheet\n+\tto make it easier to upgrade gitweb. You can add a `site` stylesheet\n+\tfor example by putting\n+----------------------------------------------------------------------------\n+push @stylesheets, \"gitweb-site.css\";\n+----------------------------------------------------------------------------\n+in the gitweb config file.  Those values that are relative paths, are\n+relative to base URI of gitweb.\n+\n+This list should contain URI of gitweb's stylesheet.  The URI of gitweb\n+stylesheet is set during build time via `GITWEB_CSS` variable.  It's default\n+value is 'static/gitweb.css' (or 'static/gitweb.min.css' if the `CSSMIN`\n+variable is defined, i.e. if CSS minifier is used during build.\n+\n+$logo::\n+\tPoints to the location where you put 'git-logo.png' on your web\n+\tserver, or to be more generic URI of logo, 72x27 size).  This image\n+\tis displayed in top right corner of each gitweb page, and used as\n+\tlogo for Atom feed.  Relative to base URI of gitweb (as a path).\n+\tCan be adjusted during building gitweb using `GITWEB_LOGO` variable\n++\n+\t[Default: 'static/git-logo.png']\n+\n+$favicon::\n+\tPoints to the location where you put 'git-favicon.png' on your web\n+\tserver, or to be more generic URI of favicon, assumed to be\n+\t\"image/png\" type; web browsers that support favicons (website icons)\n+\tmay display them in the browser's URL bar and next to site name in\n+\tbookmarks.  Relative to base URI of gitweb.  Can be adjusted during\n+\tbuild time using `GITWEB_FAVICON` variable.\n++\n+\t[Default: 'static/git-favicon.png']\n+\n+$javascript::\n+\tPoints to the location where you put 'gitweb.js' on your web server,\n+\tor to be more generic URI of JavaScript code used by gitweb.\n+\tRelative to base URI of gitweb.  Set during build time using\n+\t`GITWEB_JS` build-time configuration variable.\n++\n+Default value is either 'static/gitweb.js', or 'static/gitweb.min.js' if\n+`JSMIN` build variable is defined, i.e. if JavaScript minifier is used\n+during build.  *Note* that this single file is build (composed) of\n+individual JavaScript \"modules\".\n+\n+$home_link::\n+\tTarget of the home link on top of all pages (the first part of view\n+\t\"breadcrumbs\").  By default set to absolute URI of a page ($my_uri).\n+$home_link_str::\n+\tDescription of the home link on top of all pages, leading to $home_link\n+\t(usually main gitweb page, which means projects list).  Used as first\n+\tpart of gitweb view \"breadcrumb trail\": `<home> / <project> / <view>`.\n+\tCan be set during build time using `GITWEB_HOME_LINK_STR` variable.\n+\t[Default: \"projects\"]\n+$logo_url, $logo_label::\n+\tURI and label (title) of GIT logo link (or your site logo, if you choose\n+\tto use different logo image). By default they point to git homepage;\n+\tin the past they pointed to git documentation at www.kernel.org.\n+\n+Changing gitweb look\n+~~~~~~~~~~~~~~~~~~~~\n+You can adjust how pages generated by gitweb look using variables described\n+below.  You can change site name, add common headers and footers for all\n+pages, and add description of gitweb installation on its main page (which is\n+projects list page), etc.\n+\n+$site_name::\n+\tName of your site or organization to appear in page titles.  Set it\n+\tto something descriptive for clearer bookmarks etc.  If not set (if\n+\tempty) then gitweb uses value of `SERVER_NAME` CGI environment\n+\tvariable setting prefix of each page title to \"$SERVER_NAME Git\", or\n+\t\"Untitled Git\" if this variable is not set (e.g. if running gitweb\n+\tas standalone script).\n++\n+Can be set using `GITWEB_SITENAME` during building.  [No default]\n+\n+$site_header::\n+\tFilename of html text to include at top of each page.  Relative to\n+\t'gitweb.cgi' script.  Can be set using `GITWEB_SITE_HEADER` during\n+\tbuilding.  [No default]\n+$site_footer::\n+\tFilename of html text to include at bottom of each page.  Relative to\n+\tgitweb.cgi script.  Can be set using `GITWEB_SITE_FOOTER` during\n+\tbuilding.  [No default]\n+$home_text::\n+\tPoints to an HTML file which, if it exists, is included on the\n+\tgitweb projects overview page (\"projects_list\" view).  Relative to\n+\tgitweb.cgi script.  Default value can be adjusted using during build\n+\tvia `GITWEB_HOMETEXT` variable.\n++\n+\t[Default: 'indextext.html']\n+\n+$projects_list_description_width::\n+\tThe width (in characters) of the projects list \"Description\" column.\n+\tLonger descriptions will be cut (trying to cut at word boundary);\n+\tfull description is available as 'title' attribute (usually shown on\n+\tmouseover).  By default set to 25, which might be too small if you\n+\tuse long project descriptions.\n+$default_projects_order::\n+\tDefault value of ordering of projects on projects list page.  Valid\n+\tvalues are \"none\" (unsorted), \"project\" (by project name, i.e. path\n+\tto repository relative to `$projectroot`), \"descr\" (project\n+\tdescription), \"owner\", and \"age\" (by date of most current commit).\n+\n+\tDefault value is \"project\".  Unknown value means unsorted.\n+\n+Changing gitweb behavior\n+~~~~~~~~~~~~~~~~~~~~~~~~\n+Those configuration variables control _internal_ gitweb behavior.\n+\n+$default_blob_plain_mimetype::\n+\tDefault mimetype for blob_plain (raw) view, if mimetype checking\n+\tdoesn't result in some other type; by default \"text/plain\".\n+$default_text_plain_charset::\n+\tDefault charset for text files. If not set, web server configuration\n+\twould be used.\n+$fallback_encoding::\n+\tGitweb assumes this charset if line contains non-UTF-8 characters.\n+\tFallback decoding is used without error checking, so it can be even\n+\t\"utf-8\". Value must be valid encoding; see *Encoding::Supported*(3pm)\n+\tman page for a list.  By default \"latin1\", aka. \"iso-8859-1\".\n+@diff_opts::\n+\tRename detection options for git-diff and git-diff-tree. By default\n+\t(\\'-M'); set it to (\\'-C') or (\\'-C', \\'-C') to also detect copies,\n+\tor set it to () i.e. empty list if you don't want to have renames\n+\tdetection.\n+\n+Extra features, administrative\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+Most of features are configured via `%feature` hash; however some of extra\n+gitweb features can be turned on and configured using variables described\n+below.  This list beside configuration variables that control how gitweb\n+looks does contain variables configuring administrative side of gitweb\n+(e.g. cross-site scripting prevention; admittedly this as side effect\n+affects how \"summary\" pages look like, or load limiting).\n+\n+@git_base_url_list::\n+\tList of git base URLs used for URL to where fetch project from, shown\n+\tin project summary page.  Full URL is \"`$git_base_url/$project`\".  You\n+\tcan setup multiple base URLs (for example one for `git://` protocol\n+\taccess, and one for `http://` \"dumb\" protocol access).  Note that per\n+\trepository configuration can be set in '$GIT_DIR/cloneurl' file, or as\n+\tvalues of multi-value `gitweb.url` configuration variable in project\n+\tconfig.\n++\n+You can setup one single value (single entry/item in this list) during\n+building by using `GITWEB_BASE_URL` built-time configuration variable.  [No\n+default]\n+\n+$prevent_xss::\n+\tIf true, some gitweb features are disabled to prevent content in\n+\trepositories from launching cross-site scripting (XSS) attacks.  Set this\n+\tto true if you don't trust the content of your repositories.\n+\t[Default: false].\n+$maxload::\n+\tUsed to set the maximum load that we will still respond to gitweb queries.\n+\tIf server load exceed this value then return \"503 Service Unavailable\"\n+\terror. Server load is taken to be 0 if gitweb cannot determine its value.\n+\tSet it to undefined value to turn it off. [Default: 300]\n+$per_request_config::\n+\tIf set to code reference, it would be run once per each request.  You can\n+\tset parts of configuration that change per session, e.g. by adding\n+\tthe following code to gitweb configuration file\n+--------------------------------------------------------------------------------\n+our $per_request_config = sub {\n+\t$ENV{GL_USER} = $cgi->remote_user || \"gitweb\";\n+};\n+--------------------------------------------------------------------------------\n+Otherwise it is treated as boolean value: if true gitweb would process\n+config file once per request, if false it would process config file only\n+once.  \n+\n+*Note*: $my_url, $my_uri, and $base_url are overwritten with their default\n+values before every request, so if you want to change them, be sure to set\n+this variable to true or a code reference effecting the desired changes.\n+\n+[Default: true]\n+\n+Other variables\n+~~~~~~~~~~~~~~~\n+Usually you should not need to change (adjust) any of configuration\n+variables described below; they should be automatically set by gitweb to\n+correct value.\n+\n+$version::\n+\tGitweb version, set automatically when creating gitweb.cgi from\n+\tgitweb.perl. You might want to modify it if you are running modified\n+\tgitweb, for example `our $version .= \" with caching\";`.\n+$my_url, $my_uri::\n+\tFull URL and absolute URL of gitweb script;\n+\tin earlier versions of gitweb you might have need to set those\n+\tvariables, now there should be no need to do it.  See\n+\t`$per_request_config` if you need to set them still.\n+$base_url::\n+\tBase URL for relative URLs in pages generated by gitweb,\n+\t(e.g. `$logo`, `$favicon`, `@stylesheets` if they are relative URLs),\n+\tneeded and used only for URLs with nonempty PATH_INFO via\n+\t'<base href=\"$base_url\">'.  Usually gitweb sets its value correctly,\n+\tand there is no need to set this variable, e.g. to $my_uri or \"/\".\n+\tSee `$per_request_config` if you need to set it anyway.\n+\n+\n+EXAMPLES\n+--------\n+\n+To enable blame, pickaxe search, and snapshot support, while allowing\n+individual projects to turn them off, put the following in your\n+GITWEB_CONFIG file:\n+\n+        $feature{'blame'}{'default'} = [1];\n+        $feature{'blame'}{'override'} = 1;\n+\n+        $feature{'pickaxe'}{'default'} = [1];\n+        $feature{'pickaxe'}{'override'} = 1;\n+\n+        $feature{'snapshot'}{'default'} = ['zip', 'tgz'];\n+        $feature{'snapshot'}{'override'} = 1;\n+\n+If you allow overriding for the snapshot feature, you can specify which\n+snapshot formats are globally disabled. You can also add any command line\n+options you want (such as setting the compression level). For instance, you\n+can disable Zip compressed snapshots and set *gzip*(1) to run at level 6 by\n+adding the following lines to your gitweb configuration file:\n+\n+        $known_snapshot_formats{'zip'}{'disabled'} = 1;\n+        $known_snapshot_formats{'tgz'}{'compressor'} = ['gzip','-6'];\n+\n+ENVIRONMENT\n+-----------\n+The location of per-instance and system-wide configuration files can be set\n+using the following environment variables:\n+\n+GITWEB_CONFIG::\n+\tSets location of per-instance configuration file.\n+GITWEB_CONFIG_SYSTEM::\n+\tSets location of system-wide configuration file.  This file is read\n+\tonly if per-instance one does not exist.\n+\n+FILES\n+-----\n+gitweb_config.perl::\n+\tThis is default value for per-instance configuration file.  The\n+\tformat of this file is described above.\n+/etc/gitweb.conf::\n+\tThis is default value for system-wide configuration file.  This file\n+\tis used only if per-instance configuration variable is not found.\n+\n+SEE ALSO\n+--------\n+linkgit:git-instaweb[1]\n+\n+'gitweb/README', 'gitweb/INSTALL'\n+\n+GIT\n+---\n+Part of the linkgit:git[1] suite\ndiff --git a/git.spec.in b/git.spec.in\nindex 91c8462..06b27eb 100644\n--- a/git.spec.in\n+++ b/git.spec.in\n@@ -200,6 +200,9 @@ rm -rf $RPM_BUILD_ROOT\n %files -n gitweb\n %defattr(-,root,root)\n %{_datadir}/gitweb\n+%{!?_without_docs: %{_mandir}/man1/*gitweb*.1*}\n+%{!?_without_docs: %{_mandir}/man5/*gitweb*.5*}\n+%{!?_without_docs: %doc Documentation/*gitweb*.html }\n \n %files -n perl-Git -f perl-files\n %defattr(-,root,root)\ndiff --git a/gitweb/Makefile b/gitweb/Makefile\nindex 0a6ac00..582e1b0 100644\n--- a/gitweb/Makefile\n+++ b/gitweb/Makefile\n@@ -112,6 +112,14 @@ endif\n \n GITWEB_FILES += static/git-logo.png static/git-favicon.png\n \n+GITWEB_MAN5_TXT = gitweb.conf.txt\n+GITWEB_MAN_TXT = $(GITWEB_MAN1_TXT) $(GITWEB_MAN5_TXT) $(GITWEB_MAN7_TXT)\n+GITWEB_MAN = $(patsubst %.txt,%.1,$(GITWEB_MAN1_TXT)) \\\n+             $(patsubst %.txt,%.5,$(GITWEB_MAN5_TXT)) \\\n+             $(patsubst %.txt,%.7,$(GITWEB_MAN7_TXT))\n+GITWEB_HTML= $(patsubst %.txt,%.html,$(GITWEB_MAN_TXT))\n+GITWEB_DOC = $(GITWEB_MAN) $(GITWEB_HTML)\n+\n GITWEB_REPLACE = \\\n \t-e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \\\n \t-e 's|++GIT_BINDIR++|$(bindir)|g' \\\n@@ -155,6 +163,11 @@ test-installed:\n \tGITWEB_TEST_INSTALLED='$(DESTDIR_SQ)$(gitwebdir_SQ)' \\\n \t\t$(MAKE) -C ../t gitweb-test\n \n+### Documentation\n+\n+doc:\n+\t$(MAKE) -C ../Documentation $(GITWEB_DOC)\n+\n ### Installation rules\n \n install: all\n-- \n1.7.5\n"},{"id":"168951","messageId":"1306698626-32402-3-git-send-email-jnareb@gmail.com","threadId":"27498","inReplyTo":"1306698626-32402-1-git-send-email-jnareb@gmail.com","subject":"[RFC/PATCHv2 2/2] gitweb: Starting work on a man page for gitweb (WIP)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2011-05-29T19:50:26Z","receivedAt":"2011-05-29T19:50:26Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Gitweb documentation currently consist of gitweb/README, gitweb/INSTALL\nand comments in gitweb source code.  This is harder to find, use and\nbrowse that manpages (\"man gitweb\" or \"git help gitweb\") and HTML\ndocumentation (\"git help --web gitweb\").\n\nThe goal is to move documentation out of gitweb/README to gitweb.txt and\ngitweb.conf.txt manpages, reducing its size 10x from around 500 to\naround 50 lines (two pages), and move information not related drectly to\nbuilding and installing gitweb out of gitweb/INSTALL there.\n\nTo build gitweb documentation you can use\n\n  make -C gitweb doc\n\nor\n\n  cd gitweb; make doc\n\n\nThis is a work in progress.  Much of what is in it has been pulled\ndirectly from the README and INSTALL files of gitweb.  No effort has\nyet been made to de-duplicate any of this, i.e. to remove contents\nfrom gitweb/README and gitweb/INSTALL.  The AsciiDoc might (and\nprobably does) contain formatting errors.\n\nCurrent version is almost direct translation of SVN::Web manpage, and\nis missing much of information that finally are to be moved from\ngitweb/README to here.\n\nInspired-by: Drew Northup <drew.northup@maine.edu>\nSigned-off-by: Jakub Narebski <jnareb@gmail.com>\n---\n Documentation/Makefile        |    2 +-\n Documentation/gitweb.conf.txt |    2 +-\n Documentation/gitweb.txt      |  334 +++++++++++++++++++++++++++++++++++++++++\n gitweb/Makefile               |    1 +\n 4 files changed, 337 insertions(+), 2 deletions(-)\n create mode 100644 Documentation/gitweb.txt\n\ndiff --git a/Documentation/Makefile b/Documentation/Makefile\nindex 74ed959..bf7d7ef 100644\n--- a/Documentation/Makefile\n+++ b/Documentation/Makefile\n@@ -1,7 +1,7 @@\n MAN1_TXT= \\\n \t$(filter-out $(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \\\n \t\t$(wildcard git-*.txt)) \\\n-\tgitk.txt git.txt\n+\tgitk.txt gitweb.txt git.txt\n MAN5_TXT=gitattributes.txt gitignore.txt gitmodules.txt githooks.txt \\\n \tgitrepository-layout.txt gitweb.conf.txt\n MAN7_TXT=gitcli.txt gittutorial.txt gittutorial-2.txt \\\ndiff --git a/Documentation/gitweb.conf.txt b/Documentation/gitweb.conf.txt\nindex 34f65fa..4d773ab 100644\n--- a/Documentation/gitweb.conf.txt\n+++ b/Documentation/gitweb.conf.txt\n@@ -427,7 +427,7 @@ gitweb_config.perl::\n \n SEE ALSO\n --------\n-linkgit:git-instaweb[1]\n+linkgit:gitweb[1], linkgit:git-instaweb[1]\n \n 'gitweb/README', 'gitweb/INSTALL'\n \ndiff --git a/Documentation/gitweb.txt b/Documentation/gitweb.txt\nnew file mode 100644\nindex 0000000..3815ca4\n--- /dev/null\n+++ b/Documentation/gitweb.txt\n@@ -0,0 +1,334 @@\n+gitweb(1)\n+=========\n+\n+NAME\n+----\n+gitweb - Git web interface (web frontend to Git repositories)\n+\n+SYNOPSIS\n+--------\n+To get started with gitweb, run linkgit:git-instaweb[1] from a git repository.\n+This would configure and start your web server and run web browser pointing to\n+gitweb page.\n+\n+See http://git.kernel.org/?p=git/git.git;a=tree;f=gitweb or\n+http://repo.or.cz/w/git.git/tree/HEAD:/gitweb/ for gitweb source code, browsed\n+using gitweb.\n+\n+\n+DESCRIPTION\n+-----------\n+Gitweb provides a web interface to git repositories.  It's features include:\n+\n+* Viewing multiple Git repositories with common root.\n+* Browsing every revision of the repository.\n+* Viewing the contents of files in the repository at any revision.\n+* Viewing the revision log of branches, history of files and directories,\n+  see what was changed when, by who.\n+* Viewing the blame/annotation details of any file (if enabled).\n+* Generating RSS and Atom feeds of commits, for any branch.\n+  The feeds are auto-discoverable in modern web browsers.\n+* Viewing everything that was changed in a revision, and step through\n+  revisions one at a time, viewing the history of the repository.\n+* Finding commits which commit messages matches given search term.\n+\n+CONFIGURATION\n+-------------\n+Various aspects of gitweb's behavior can be controlled through the configuration\n+file `gitweb_conf.perl` or `/etc/gitweb.conf`.  See the linkgit:gitweb.conf[5]\n+for details.\n+\n+Repositories\n+~~~~~~~~~~~~\n+Gitweb can show information from one or more Git repositories.  These\n+repositories have to be all on local filesystem, and have to share common\n+repository root, i.e. be all under a single parent repository.\n+\n+-----------------------------------------------------------------------\n+our $projectroot = '/path/to/parent/directory';\n+-----------------------------------------------------------------------\n+\n+The default value for $projectroot is '/pub/git'.  You can change it during\n+building gitweb via GITWEB_PROJECTROOT build configuration variable.\n+\n+By default all git repositories under $projectroot are visible and available\n+to gitweb.  The list of projects is generated by default by scanning the\n+$projectroot directory for git repositories.  \n+\n+The name of repository in gitweb is path to it's $GIT_DIR (it's object database)\n+relative to $projectroot.  Therefore the repository $repo can be found at\n+\"$projectroot/$repo\".\n+\n+Projects list file format\n+~~~~~~~~~~~~~~~~~~~~~~~~~\n+Instead of having gitweb find repositories by scanning filesystem starting from\n+$projectroot, you can provide a pre-generated list of [visible] projects by\n+setting $projects_list to a plain text file with a list of projects (with some\n+additional info).\n+\n+This file uses the following format:\n+\n+* One record (for project / repository) per line; does not support lines\n+continuation (newline escaping).\n+\n+* Leading and trailing whitespace are ignored.\n+\n+* Whitespace separated fields; any run of whitespace can be used as field\n+separator (rules for Perl's \"`split(\" \", $line)`\").\n+\n+* Fields use modified URI encoding, defined in RFC 3986, section 2.1\n+(Percent-Encoding), or rather \"Query string encoding\" (see\n+link:http://en.wikipedia.org/wiki/Query_string#URL_encoding[]), the difference\n+being that SP (\" \") can be encoded as \"{plus}\" (and therefore \"{plus}\" has to be\n+also percent-encoded).  Reserved characters are: \"%\" (used for encoding),\n+\"{plus}\" (can be used to encode SPACE), all whitespace characters as defined in\n+Perl, including SP, TAB and LF, (used to separate fields in a record).\n+\n+* Currently recognized fields are:\n+<repository path>::\n+\tpath to repository GIT_DIR, relative to $projectroot\n+<repository owner>::\n+\tdisplayed as repository owner, preferably full name, or email,\n+        or both\n+\n+You can generate the projects list index file using the project_index action\n+(the 'TXT' link on projects list page) directly from gitweb.\n+\n+Example contents:\n+-----------------------------------------------------------------------\n+foo.git       Joe+R+Hacker+<joe@example.com>\n+foo/bar.git   O+W+Ner+<owner@example.org>\n+-----------------------------------------------------------------------\n+\n+\n+By default this file controls only which projects are visible on projects list\n+page (note that entries that do not point to correctly recognized git\n+repositories won't be displayed by gitweb).  Even if project is not visible on\n+projects list page, you can view it nevertheless by hand-crafting a gitweb URL.\n+By setting $strict_export configuration variable (see linkgit:gitweb.conf[5]) to\n+true value you can allow viewing only of repositories also shown on the overview\n+page.\n+\n+\n+ACTIONS, AND URLS\n+-----------------\n+Gitweb can use path_info (component) based URLs, or it can pass all necessary\n+information via query parameters.  The typical gitweb URLs are broken down in to\n+five components:\n+\n+-----------------------------------------------------------------------\n+.../gitweb.cgi/<repo>/<action>/<revision>:/<path>?<arguments>\n+-----------------------------------------------------------------------\n+\n+repo::\n+\tThe repository the action will be performed on.\n++\n+\tAll actions except for those that list all available projects,\n+\tin whatever form, require this parameter.\n+\n+action::\n+\tThe action that will be run.  Defaults to 'projects_list' if repo\n+\tis not set, and to 'summary' otherwise.\n+\n+revision::\n+\tRevision shown.  Defaults to HEAD.\n+\n+path::\n+\tThe path within the <repository> that the action is performed on,\n+\tfor those actions that require it.\n+\n+arguments::\n+\tAny arguments that control the behaviour of the action.\n+\n+Some actions require or allow to specify two revisions, and sometimes even two\n+pathnames.  In most general form such path_info (component) based gitweb URL\n+looks like this:\n+\n+-----------------------------------------------------------------------\n+.../gitweb.cgi/<repo>/<action>/<revision_from>:/<path_from>..<revision_to>:/<path_to>?<arguments>\n+-----------------------------------------------------------------------\n+\n+\n+Each action is implemented as a subroutine, and must be present in %actions\n+hash.  Some actions are disabled by default, and must be turned on via feature\n+mechanism.  For example to enable 'blame' view add the following to gitweb\n+configuration file:\n+\n+-----------------------------------------------------------------------\n+$feature{'blame'}{'default'} = [1];\n+-----------------------------------------------------------------------\n+\n+\n+Actions:\n+~~~~~~~~\n+The standard actions are:\n+\n+project_list::\n+\tLists the available Git repositories.  This is the default command if no\n+\trepository is specified in the URL.\n+\n+summary::\n+\tDisplays summary about given repository.  This is the default command if\n+\tno action is specified in URL, and only repository is specified.\n+\n+heads::\n+remotes::\n+\tLists all local or all remote-tracking branches in given repository.\n++\n+\tThe latter is not available by default, unless configured.\n+\n+tags::\n+\tList all tags (lightweight and annotated) in given repository.\n+\n+blob::\n+tree::\n+\tShows the files and directories in a given repository path, at given\n+\trevision.  This is default command if no action is specified in the URL,\n+\tand path is given.\n+\n+blob_plain::\n+\tReturns the raw data for the file in given repository, at given path and\n+\trevision.  Links to this action are marked 'raw'.\n+\n+blobdiff::\n+\tShows the difference between two revisions of the same file.\n+\n+blame::\n+blame_incremental::\n+\tShows the blame (also called annotation) information for a file. On a\n+\tper line basis it shows the revision in which that line was last changed\n+\tand the user that committed the change.  The incremental version (which\n+\tif configured is used automatically when JavaScript is enabled) uses\n+\tAjax to incrementally add blame info to the contents of given file.\n++\n+\tThis action is disabled by default for performance reasons.\n+\n+commit::\n+commitdiff::\n+\tShows information about a specific commit in a repository.  The 'commit'\n+\tview shows information about commit in more detail, the 'commitdiff'\n+\taction shows changeset for given commit.\n+\n+patch:: \n+\tReturns the commit in plain text mail format, suitable for applying with\n+\tlinkgit:git-am[1].\n+\n+tag::\n+\tDisplay specific annotated tag (tag object).\t\n+\n+log::\n+shortlog::\n+\tShows log information (commit message or just commit subject) for a\n+\tgiven branch (starting from given revision).\n++\n+\tThe 'shortlog' view is more compact; it shows one commit per line.\n+\n+history::\n+\tShows history of the file or directory in a given repository path,\n+\tstarting from given revision (defaults to HEAD, i.e. default branch).\n++\n+\tThis view is similar to 'shortlog' view.\n+\n+rss::\n+atom::\n+\tGenerates an RSS (or Atom) feed of changes to repository.\n+\n+\n+WEB SERVERS\n+-----------\n+This section explains how to configure some common webservers to run gitweb. In\n+all cases, `/path/to/gitweb` in the examples is the directory you ran installed\n+gitweb in, and contains `gitweb_config.perl`.\n+\n+If you've configured a web server that isn't listed here for gitweb, please send\n+in the instructions so they can be included in a future release.\n+\n+Apache as CGI\n+~~~~~~~~~~~~~\n+Apache must be configured to support CGI scripts in the directory in\n+which gitweb is installed.  Let's assume that it is '/var/www/cgi-bin'\n+directory.\n+\n+-----------------------------------------------------------------------\n+ScriptAlias /cgi-bin/ \"/var/www/cgi-bin/\"\n+\n+<Directory \"/var/www/cgi-bin\">\n+    Options Indexes FollowSymlinks ExecCGI\n+    AllowOverride None\n+    Order allow,deny\n+    Allow from all\n+</Directory>\n+-----------------------------------------------------------------------\n+\n+With that configuration the full path to browse repositories would be:\n+\n+  http://server/cgi-bin/gitweb.cgi\n+\n+Apache with mod_perl, via ModPerl::Registry\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n+You can use mod_perl with gitweb.  You must install Apache::Registry\n+(for mod_perl 1.x) or ModPerl::Registry (for mod_perl 2.x) to enable\n+this support.\n+\n+Assuming that gitweb is installed to '/var/www/perl', the following\n+Apache configuration (for mod_perl 2.x) is suitable.\n+\n+-----------------------------------------------------------------------\n+Alias /perl \"/var/www/perl\"\n+\n+<Directory \"/var/www/perl\">\n+    SetHandler perl-script\n+    PerlResponseHandler ModPerl::Registry\n+    PerlOptions +ParseHeaders\n+    Options Indexes FollowSymlinks +ExecCGI\n+    AllowOverride None\n+    Order allow,deny\n+    Allow from all\n+</Directory>\n+-----------------------------------------------------------------------\n+\n+With that configuration the full path to browse repositories would be:\n+\n+  http://server/perl/gitweb.cgi\n+\n+Apache with FastCGI\n+~~~~~~~~~~~~~~~~~~~\n+Gitweb works with Apache and FastCGI.  First you need to rename, copy\n+or symlink gitweb.cgi to gitweb.fcgi.  Let's assume that gitweb is\n+installed in '/usr/share/gitweb' directory.  The following Apache\n+configuration is suitable (UNTESTED!)\n+\n+-----------------------------------------------------------------------\n+FastCgiServer /usr/share/gitweb/gitweb.cgi\n+ScriptAlias /gitweb /usr/share/gitweb/gitweb.cgi\n+\n+Alias /gitweb/static /usr/share/gitweb/static\n+<Directory /usr/share/gitweb/static>\n+    SetHandler default-handler\n+</Directory>\n+-----------------------------------------------------------------------\n+\n+With that configuration the full path to browse repositories would be:\n+\n+  http://server/gitweb\n+\n+\n+ADVANCED WEB SERVER SETUP\n+-------------------------\n+\n+...\n+\n+BUGS\n+----\n+Please report any bugs or feature requests to git@vger.kernel.org,\n+putting \"gitweb\" in the subject of email.\n+\n+SEE ALSO\n+--------\n+linkgit:gitweb.conf[5], linkgit:git-instaweb[1]\n+\n+'gitweb/README', 'gitweb/INSTALL'\n+\n+GIT\n+---\n+Part of the linkgit:git[1] suite\ndiff --git a/gitweb/Makefile b/gitweb/Makefile\nindex 582e1b0..240c10a 100644\n--- a/gitweb/Makefile\n+++ b/gitweb/Makefile\n@@ -112,6 +112,7 @@ endif\n \n GITWEB_FILES += static/git-logo.png static/git-favicon.png\n \n+GITWEB_MAN1_TXT = gitweb.txt\n GITWEB_MAN5_TXT = gitweb.conf.txt\n GITWEB_MAN_TXT = $(GITWEB_MAN1_TXT) $(GITWEB_MAN5_TXT) $(GITWEB_MAN7_TXT)\n GITWEB_MAN = $(patsubst %.txt,%.1,$(GITWEB_MAN1_TXT)) \\\n-- \n1.7.5\n"},{"id":"168956","messageId":"7vwrh9nsyr.fsf@alter.siamese.dyndns.org","threadId":"27498","inReplyTo":"1306698626-32402-2-git-send-email-jnareb@gmail.com","subject":"Re: [RFC/PATCHv2 1/2] Starting work on a man page for /etc/gitweb.conf (WIP)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-05-29T20:37:48Z","receivedAt":"2011-05-29T20:37:48Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jakub Narebski <jnareb@gmail.com> writes:\n\n> diff --git a/gitweb/Makefile b/gitweb/Makefile\n> index 0a6ac00..582e1b0 100644\n> --- a/gitweb/Makefile\n> +++ b/gitweb/Makefile\n> @@ -112,6 +112,14 @@ endif\n>  \n>  GITWEB_FILES += static/git-logo.png static/git-favicon.png\n>  \n> +GITWEB_MAN5_TXT = gitweb.conf.txt\n> +GITWEB_MAN_TXT = $(GITWEB_MAN1_TXT) $(GITWEB_MAN5_TXT) $(GITWEB_MAN7_TXT)\n> +GITWEB_MAN = $(patsubst %.txt,%.1,$(GITWEB_MAN1_TXT)) \\\n> +             $(patsubst %.txt,%.5,$(GITWEB_MAN5_TXT)) \\\n> +             $(patsubst %.txt,%.7,$(GITWEB_MAN7_TXT))\n> +GITWEB_HTML= $(patsubst %.txt,%.html,$(GITWEB_MAN_TXT))\n> +GITWEB_DOC = $(GITWEB_MAN) $(GITWEB_HTML)\n> +\n>  GITWEB_REPLACE = \\\n>  \t-e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \\\n>  \t-e 's|++GIT_BINDIR++|$(bindir)|g' \\\n> @@ -155,6 +163,11 @@ test-installed:\n>  \tGITWEB_TEST_INSTALLED='$(DESTDIR_SQ)$(gitwebdir_SQ)' \\\n>  \t\t$(MAKE) -C ../t gitweb-test\n>  \n> +### Documentation\n> +\n> +doc:\n> +\t$(MAKE) -C ../Documentation $(GITWEB_DOC)\n> +\n>  ### Installation rules\n>  \n>  install: all\n\nI am not sure if this target is needed or even desirable.\n\nThe only potential benefit this complexity and risk of these build\nprocedure knowledge diverge what is in ../Documentation is to let you say\n\"cd gitweb && make doc\" and avoid building the rest of the documentation,\nbut I personally do not find it necessary at all.\n\nAren't you making a mistake similar to the one that let instaweb have\nintimate and unnecessary knowledge of how to build gitweb, which you\nrecently cleaned up?\n"},{"id":"168958","messageId":"201105292258.42845.jnareb@gmail.com","threadId":"27498","inReplyTo":"7vwrh9nsyr.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC/PATCHv2 1/2] Starting work on a man page for /etc/gitweb.conf (WIP)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2011-05-29T20:58:39Z","receivedAt":"2011-05-29T20:58:39Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"On Sun, 29 May 2011, Junio C Hamano wrote:\n> Jakub Narebski <jnareb@gmail.com> writes:\n> \n> > diff --git a/gitweb/Makefile b/gitweb/Makefile\n> > index 0a6ac00..582e1b0 100644\n> > --- a/gitweb/Makefile\n> > +++ b/gitweb/Makefile\n> > @@ -112,6 +112,14 @@ endif\n> >  \n> >  GITWEB_FILES += static/git-logo.png static/git-favicon.png\n> >  \n> > +GITWEB_MAN5_TXT = gitweb.conf.txt\n> > +GITWEB_MAN_TXT = $(GITWEB_MAN1_TXT) $(GITWEB_MAN5_TXT) $(GITWEB_MAN7_TXT)\n> > +GITWEB_MAN = $(patsubst %.txt,%.1,$(GITWEB_MAN1_TXT)) \\\n> > +             $(patsubst %.txt,%.5,$(GITWEB_MAN5_TXT)) \\\n> > +             $(patsubst %.txt,%.7,$(GITWEB_MAN7_TXT))\n> > +GITWEB_HTML= $(patsubst %.txt,%.html,$(GITWEB_MAN_TXT))\n> > +GITWEB_DOC = $(GITWEB_MAN) $(GITWEB_HTML)\n> > +\n> >  GITWEB_REPLACE = \\\n> >  \t-e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \\\n> >  \t-e 's|++GIT_BINDIR++|$(bindir)|g' \\\n> > @@ -155,6 +163,11 @@ test-installed:\n> >  \tGITWEB_TEST_INSTALLED='$(DESTDIR_SQ)$(gitwebdir_SQ)' \\\n> >  \t\t$(MAKE) -C ../t gitweb-test\n> >  \n> > +### Documentation\n> > +\n> > +doc:\n> > +\t$(MAKE) -C ../Documentation $(GITWEB_DOC)\n> > +\n> >  ### Installation rules\n> >  \n> >  install: all\n> \n> I am not sure if this target is needed or even desirable.\n\nWell, this is the target that it is nice to have.  The implementation\nneeds to be improved, as you noticed.\n\n> The only potential benefit this complexity and risk of these build\n> procedure knowledge diverge what is in ../Documentation is to let you say\n> \"cd gitweb && make doc\" and avoid building the rest of the documentation,\n> but I personally do not find it necessary at all.\n> \n> Aren't you making a mistake similar to the one that let instaweb have\n> intimate and unnecessary knowledge of how to build gitweb, which you\n> recently cleaned up?\n\nThanks for sanity check!\n\nInstead of duplicating Documentation/Makefile knowledge in gitweb/Makefile,\nlet's just proxy to Documentation/Makefile like for 'test' target:\n\n  +doc:\n  +\t$(MAKE) -C ../Documentation gitweb\n  +\n\nIn Documentation/Makefile the new 'gitweb' target could look just like\nthis:\n\n  +GITWEB_DOC = $(filter gitweb.%,$(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7)) \n  +gitweb: $(GITWEB_DOC)\n\nAnd it would be much shorter, too.\n\n-- \nJakub Narebski\nPoland\n"}]}