Autogenerated HTML docs for v1.5.1.1-174-gabbf5
authorJunio C Hamano <junio@hera.kernel.org>
Wed, 18 Apr 2007 09:57:04 +0000 (09:57 +0000)
committerJunio C Hamano <junio@hera.kernel.org>
Wed, 18 Apr 2007 09:57:04 +0000 (09:57 +0000)
config.txt
git-config.html
git-cvsserver.html
git-cvsserver.txt

index 7e41ca6a0d3e4329d1efc10b4dcb90613975e5bd..2c0a66632329dae8ae1bf9412a57ab247cc8a603 100644 (file)
@@ -423,8 +423,34 @@ gitcvs.allbinary::
        causes the client to treat all files as binary files which suppresses
        any newline munging it otherwise might do. A work-around for the
        fact that there is no way yet to set single files to mode '-kb'.
+
+gitcvs.dbname::
+       Database used by git-cvsserver to cache revision information
+       derived from the git repository. The exact meaning depends on the
+       used database driver, for SQLite (which is the default driver) this
+       is a filename. Supports variable substitution (see
+       gitlink:git-cvsserver[1] for details). May not contain semicolons (`;`).
+       Default: '%Ggitcvs.%m.sqlite'
+
+gitcvs.dbdriver::
+       Used Perl DBI driver. You can specify any available driver
+        for this here, but it might not work. git-cvsserver is tested
+       with 'DBD::SQLite', reported to work with 'DBD::Pg', and
+       reported *not* to work with 'DBD::mysql'. Experimental feature.
+       May not contain double colons (`:`). Default: 'SQLite'.
        See gitlink:git-cvsserver[1].
 
+gitcvs.dbuser, gitcvs.dbpass::
+       Database user and password. Only useful if setting 'gitcvs.dbdriver',
+       since SQLite has no concept of database users and/or passwords.
+       'gitcvs.dbuser' supports variable substitution (see
+       gitlink:git-cvsserver[1] for details).
+
+All gitcvs variables except for 'gitcvs.allbinary' can also specifed
+as 'gitcvs.<access_method>.<varname>' (where 'access_method' is one
+of "ext" and "pserver") to make them apply only for the given access
+method.
+
 http.sslVerify::
        Whether to verify the SSL certificate when fetching or pushing
        over HTTPS. Can be overridden by the 'GIT_SSL_NO_VERIFY' environment
index c01792896a290c945f5115e89c5a34a11ccee2e6..8245cf39808d28444780f69a9766bad28be63ee8 100644 (file)
@@ -1178,10 +1178,52 @@ gitcvs.allbinary
         causes the client to treat all files as binary files which suppresses\r
         any newline munging it otherwise might do. A work-around for the\r
         fact that there is no way yet to set single files to mode <em>-kb</em>.\r
+</p>\r
+</dd>\r
+<dt>\r
+gitcvs.dbname\r
+</dt>\r
+<dd>\r
+<p>\r
+        Database used by git-cvsserver to cache revision information\r
+        derived from the git repository. The exact meaning depends on the\r
+        used database driver, for SQLite (which is the default driver) this\r
+        is a filename. Supports variable substitution (see\r
+        <a href="git-cvsserver.html">git-cvsserver(1)</a> for details). May not contain semicolons (<tt>;</tt>).\r
+        Default: <em>%Ggitcvs.%m.sqlite</em>\r
+</p>\r
+</dd>\r
+<dt>\r
+gitcvs.dbdriver\r
+</dt>\r
+<dd>\r
+<p>\r
+        Used Perl DBI driver. You can specify any available driver\r
+        for this here, but it might not work. git-cvsserver is tested\r
+        with <em>DBD::SQLite</em>, reported to work with <em>DBD::Pg</em>, and\r
+        reported <strong>not</strong> to work with <em>DBD::mysql</em>. Experimental feature.\r
+        May not contain double colons (<tt>:</tt>). Default: <em>SQLite</em>.\r
         See <a href="git-cvsserver.html">git-cvsserver(1)</a>.\r
 </p>\r
 </dd>\r
 <dt>\r
+gitcvs.dbuser, gitcvs.dbpass\r
+</dt>\r
+<dd>\r
+<p>\r
+        Database user and password. Only useful if setting <em>gitcvs.dbdriver</em>,\r
+        since SQLite has no concept of database users and/or passwords.\r
+        <em>gitcvs.dbuser</em> supports variable substitution (see\r
+        <a href="git-cvsserver.html">git-cvsserver(1)</a> for details).\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>All gitcvs variables except for <em>gitcvs.allbinary</em> can also specifed\r
+as <em>gitcvs.&lt;access_method&gt;.&lt;varname&gt;</em> (where <em>access_method</em> is one\r
+of "ext" and "pserver") to make them apply only for the given access\r
+method.</p>\r
+<dl>\r
+<dt>\r
 http.sslVerify\r
 </dt>\r
 <dd>\r
@@ -1566,7 +1608,7 @@ transfer.unpackLimit
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 14-Apr-2007 16:21:44 UTC\r
+Last updated 18-Apr-2007 09:56:50 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 85bc8da0462ce3d027d1938b8e89673eb5fe33ea..576bdb952ebd9dd38dcf1db7e6e577f53c846f6a 100644 (file)
@@ -290,6 +290,9 @@ plugin. Most functionality works fine with both of these clients.</p>
 <p>Currently cvsserver works over SSH connections for read/write clients, and\r
 over pserver for anonymous CVS access.</p>\r
 <p>CVS clients cannot tag, branch or perform GIT merges.</p>\r
+<p>git-cvsserver maps GIT branches to CVS modules. This is very different\r
+from what most CVS users would expect since in CVS modules usually represent\r
+one or more directories.</p>\r
 </div>\r
 <h2>INSTALLATION</h2>\r
 <div class="sectionbody">\r
@@ -329,9 +332,21 @@ For each repo that you want accessible from CVS you need to edit config in
 </tt></pre>\r
 </div></div>\r
 <p>Note: you need to ensure each user that is going to invoke git-cvsserver has\r
-write access to the log file and to the git repository. When offering anon\r
-access via pserver, this means that the nobody user should have write access\r
-to at least the sqlite database at the root of the repository.</p>\r
+write access to the log file and to the database (see\r
+<a href="#dbbackend">Database Backend</a>. If you want to offer write access over\r
+SSH, the users of course also need write access to the git repository itself.</p>\r
+<p><a id="configaccessmethod"></a>All configuration variables can also be overriden for a specific method of\r
+access. Valid method names are "ext" (for SSH access) and "pserver". The\r
+following example configuration would disable pserver access while still\r
+allowing access over SSH.</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>   [gitcvs]\r
+        enabled=0\r
+\r
+   [gitcvs "ext"]\r
+        enabled=1</tt></pre>\r
+</div></div>\r
 </li>\r
 <li>\r
 <p>\r
@@ -365,6 +380,131 @@ Clients should now be able to check out the project. Use the CVS <em>module</em>
 </li>\r
 </ol>\r
 </div>\r
+<h2><a id="dbbackend"></a>Database Backend</h2>\r
+<div class="sectionbody">\r
+<p>git-cvsserver uses one database per git head (i.e. CVS module) to\r
+store information about the repository for faster access. The\r
+database doesn't contain any persitent data and can be completly\r
+regenerated from the git repository at any time. The database\r
+needs to be updated (i.e. written to) after every commit.</p>\r
+<p>If the commit is done directly by using git (as opposed to\r
+using git-cvsserver) the update will need to happen on the\r
+next repository access by git-cvsserver, independent of\r
+access method and requested operation.</p>\r
+<p>That means that even if you offer only read access (e.g. by using\r
+the pserver method), git-cvsserver should have write access to\r
+the database to work reliably (otherwise you need to make sure\r
+that the database if up-to-date all the time git-cvsserver is run).</p>\r
+<p>By default it uses SQLite databases in the git directory, named\r
+<tt>gitcvs.&lt;module_name&gt;.sqlite</tt>. Note that the SQLite backend creates\r
+temporary files in the same directory as the database file on\r
+write so it might not be enough to grant the users using\r
+git-cvsserver write access to the database file without granting\r
+them write access to the directory, too.</p>\r
+<p>You can configure the database backend with the following\r
+configuration variables:</p>\r
+<h3>Configuring database backend</h3>\r
+<p>git-cvsserver uses the Perl DBI module. Please also read\r
+its documentation if changing these variables, especially\r
+about <tt>DBI-&gt;connect()</tt>.</p>\r
+<dl>\r
+<dt>\r
+gitcvs.dbname\r
+</dt>\r
+<dd>\r
+<p>\r
+        Database name. The exact meaning depends on the\r
+        used database driver, for SQLite this is a filename.\r
+        Supports variable substitution (see below). May\r
+        not contain semicolons (<tt>;</tt>).\r
+        Default: <em>%Ggitcvs.%m.sqlite</em>\r
+</p>\r
+</dd>\r
+<dt>\r
+gitcvs.dbdriver\r
+</dt>\r
+<dd>\r
+<p>\r
+        Used DBI driver. You can specify any available driver\r
+        for this here, but it might not work. cvsserver is tested\r
+        with <em>DBD::SQLite</em>, reported to work with\r
+        <em>DBD::Pg</em>, and reported <strong>not</strong> to work with <em>DBD::mysql</em>.\r
+        Please regard this as an experimental feature. May not\r
+        contain double colons (<tt>:</tt>).\r
+        Default: <em>SQLite</em>\r
+</p>\r
+</dd>\r
+<dt>\r
+gitcvs.dbuser\r
+</dt>\r
+<dd>\r
+<p>\r
+        Database user. Only useful if setting <tt>dbdriver</tt>, since\r
+        SQLite has no concept of database users. Supports variable\r
+        substitution (see below).\r
+</p>\r
+</dd>\r
+<dt>\r
+gitcvs.dbpass\r
+</dt>\r
+<dd>\r
+<p>\r
+        Database password.  Only useful if setting <tt>dbdriver</tt>, since\r
+        SQLite has no concept of database passwords.\r
+</p>\r
+</dd>\r
+</dl>\r
+<p>All variables can also be set per access method, see <a href="#configaccessmethod">above</a>.</p>\r
+<h4>Variable substitution</h4>\r
+<p>In <tt>dbdriver</tt> and <tt>dbuser</tt> you can use the following variables:</p>\r
+<dl>\r
+<dt>\r
+%G\r
+</dt>\r
+<dd>\r
+<p>\r
+        git directory name\r
+</p>\r
+</dd>\r
+<dt>\r
+%g\r
+</dt>\r
+<dd>\r
+<p>\r
+        git directory name, where all characters except for\r
+        alpha-numeric ones, <tt>.</tt>, and <tt>-</tt> are replaced with\r
+        <tt>_</tt> (this should make it easier to use the directory\r
+        name in a filename if wanted)\r
+</p>\r
+</dd>\r
+<dt>\r
+%m\r
+</dt>\r
+<dd>\r
+<p>\r
+        CVS module/git head name\r
+</p>\r
+</dd>\r
+<dt>\r
+%a\r
+</dt>\r
+<dd>\r
+<p>\r
+        access method (one of "ext" or "pserver")\r
+</p>\r
+</dd>\r
+<dt>\r
+%u\r
+</dt>\r
+<dd>\r
+<p>\r
+        Name of the user running git-cvsserver.\r
+        If no name can be determined, the\r
+        numeric uid is used.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
 <h2>Eclipse CVS Client Notes</h2>\r
 <div class="sectionbody">\r
 <p>To get a checkout with the Eclipse CVS client:</p>\r
@@ -473,7 +613,7 @@ Martin Langhoff &lt;martin@catalyst.net.nz&gt;
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 08-Apr-2007 08:30:41 UTC\r
+Last updated 18-Apr-2007 09:56:50 UTC\r
 </div>\r
 </div>\r
 </body>\r
index f9e0c7737952891633a1f5503f8dc5ad46fbf53f..d22844ba49859b9a189317744e0f14431267e60a 100644 (file)
@@ -31,6 +31,10 @@ over pserver for anonymous CVS access.
 
 CVS clients cannot tag, branch or perform GIT merges.
 
+git-cvsserver maps GIT branches to CVS modules. This is very different
+from what most CVS users would expect since in CVS modules usually represent
+one or more directories.
+
 INSTALLATION
 ------------
 
@@ -65,9 +69,22 @@ env variable, you can rename git-cvsserver to cvs.
 
 ------
 Note: you need to ensure each user that is going to invoke git-cvsserver has
-write access to the log file and to the git repository. When offering anon
-access via pserver, this means that the nobody user should have write access
-to at least the sqlite database at the root of the repository.
+write access to the log file and to the database (see
+<<dbbackend,Database Backend>>. If you want to offer write access over
+SSH, the users of course also need write access to the git repository itself.
+
+[[configaccessmethod]]
+All configuration variables can also be overriden for a specific method of
+access. Valid method names are "ext" (for SSH access) and "pserver". The
+following example configuration would disable pserver access while still
+allowing access over SSH.
+------
+   [gitcvs]
+        enabled=0
+
+   [gitcvs "ext"]
+        enabled=1
+------
 --
 3. On the client machine you need to set the following variables.
    CVSROOT should be set as per normal, but the directory should point at the
@@ -93,6 +110,90 @@ Example:
      cvs co -d project-master master
 ------
 
+[[dbbackend]]
+Database Backend
+----------------
+
+git-cvsserver uses one database per git head (i.e. CVS module) to
+store information about the repository for faster access. The
+database doesn't contain any persitent data and can be completly
+regenerated from the git repository at any time. The database
+needs to be updated (i.e. written to) after every commit.
+
+If the commit is done directly by using git (as opposed to
+using git-cvsserver) the update will need to happen on the
+next repository access by git-cvsserver, independent of
+access method and requested operation.
+
+That means that even if you offer only read access (e.g. by using
+the pserver method), git-cvsserver should have write access to
+the database to work reliably (otherwise you need to make sure
+that the database if up-to-date all the time git-cvsserver is run).
+
+By default it uses SQLite databases in the git directory, named
+`gitcvs.<module_name>.sqlite`. Note that the SQLite backend creates
+temporary files in the same directory as the database file on
+write so it might not be enough to grant the users using
+git-cvsserver write access to the database file without granting
+them write access to the directory, too.
+
+You can configure the database backend with the following
+configuration variables:
+
+Configuring database backend
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+git-cvsserver uses the Perl DBI module. Please also read
+its documentation if changing these variables, especially
+about `DBI->connect()`.
+
+gitcvs.dbname::
+       Database name. The exact meaning depends on the
+       used database driver, for SQLite this is a filename.
+       Supports variable substitution (see below). May
+       not contain semicolons (`;`).
+       Default: '%Ggitcvs.%m.sqlite'
+
+gitcvs.dbdriver::
+       Used DBI driver. You can specify any available driver
+       for this here, but it might not work. cvsserver is tested
+       with 'DBD::SQLite', reported to work with
+       'DBD::Pg', and reported *not* to work with 'DBD::mysql'.
+       Please regard this as an experimental feature. May not
+       contain double colons (`:`).
+       Default: 'SQLite'
+
+gitcvs.dbuser::
+       Database user. Only useful if setting `dbdriver`, since
+       SQLite has no concept of database users. Supports variable
+       substitution (see below).
+
+gitcvs.dbpass::
+       Database password.  Only useful if setting `dbdriver`, since
+       SQLite has no concept of database passwords.
+
+All variables can also be set per access method, see <<configaccessmethod,above>>.
+
+Variable substitution
+^^^^^^^^^^^^^^^^^^^^^
+In `dbdriver` and `dbuser` you can use the following variables:
+
+%G::
+       git directory name
+%g::
+       git directory name, where all characters except for
+       alpha-numeric ones, `.`, and `-` are replaced with
+       `_` (this should make it easier to use the directory
+       name in a filename if wanted)
+%m::
+       CVS module/git head name
+%a::
+       access method (one of "ext" or "pserver")
+%u::
+       Name of the user running git-cvsserver.
+       If no name can be determined, the
+       numeric uid is used.
+
 Eclipse CVS Client Notes
 ------------------------