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
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.<access_method>.<varname></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
</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
<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
</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
</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.<module_name>.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->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
</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
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
------------
------
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
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
------------------------