path: root/Documentation/git-cvsserver.txt
diff options
authorFrank Lichtenheld <>2007-04-07 14:58:10 (GMT)
committerJunio C Hamano <>2007-04-08 07:23:14 (GMT)
commitfebe7dcc088020366bbc601a219a1d6c30ced0c2 (patch)
tree7ed39e1e1a3ee4b968f32bee7343039aa455f747 /Documentation/git-cvsserver.txt
parent473937ed44c112e5d3ced52ab3f9a9e53eccc272 (diff)
cvsserver: Add asciidoc documentation for new database backend configuration
Documents the new configuration variables and the variable substitution mechanism. Signed-off-by: Frank Lichtenheld <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/git-cvsserver.txt')
1 files changed, 83 insertions, 4 deletions
diff --git a/Documentation/git-cvsserver.txt b/Documentation/git-cvsserver.txt
index f00e6d8..6a5fcfd 100644
--- a/Documentation/git-cvsserver.txt
+++ b/Documentation/git-cvsserver.txt
@@ -65,11 +65,12 @@ 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.
-Both configuration variables can also be overriden for a specific method of
+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.
@@ -105,6 +106,84 @@ Example:
cvs co -d project-master master
+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. 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 also write access to the directory.
+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()`.
+ 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'
+ 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'
+ Database user. Only useful if setting `dbdriver`, since
+ SQLite has no concept of database users. Supports variable
+ substitution (see below).
+ 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:
+ git directory name
+ 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)
+ CVS module/git head name
+ access method (one of "ext" or "pserver")
+ Name of the user running git-cvsserver.
+ If no name can be determined, the
+ numeric uid is used.
Eclipse CVS Client Notes