From: Frank Lichtenheld <frank@lichtenheld.de>
To: Junio C Hamano <junkio@cox.net>
Cc: git@vger.kernel.org, Frank Lichtenheld <frank@lichtenheld.de>
Subject: [PATCH (amend)] cvsserver: Add asciidoc documentation for new database backend configuration
Date: Thu, 12 Apr 2007 16:43:36 +0200 [thread overview]
Message-ID: <11763890161953-git-send-email-frank@lichtenheld.de> (raw)
In-Reply-To: <7v64879rwd.fsf@assigned-by-dhcp.cox.net>
Documents the new configuration variables and the variable
substitution mechanism.
Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
---
Documentation/git-cvsserver.txt | 93 +++++++++++++++++++++++++++++++++++++--
1 files changed, 89 insertions(+), 4 deletions(-)
Reworded the section about git-cvsserver needing to update the
database.
diff --git a/Documentation/git-cvsserver.txt b/Documentation/git-cvsserver.txt
index 2cf8153..9fbaf75 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
+[[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.
@@ -105,6 +106,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
------------------------
--
1.5.1
next prev parent reply other threads:[~2007-04-12 14:44 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-19 15:55 [PATCH/RFC] cvsserver: Make configuration way more flexible Frank Lichtenheld
2007-03-19 15:55 ` [PATCH 1/5] cvsserver: Introduce new state variable 'method' Frank Lichtenheld
2007-03-19 15:55 ` [PATCH 2/5] cvsserver: Handle three part keys in git config correctly Frank Lichtenheld
2007-03-19 15:55 ` [PATCH 3/5] cvsserver: Allow to override the configuration per access method Frank Lichtenheld
2007-03-19 15:56 ` [PATCH 4/5] cvsserver: Make the database backend configurable Frank Lichtenheld
2007-03-19 19:47 ` Martin Langhoff
2007-03-23 15:17 ` Frank Lichtenheld
2007-03-23 18:39 ` Frank Lichtenheld
2007-03-19 15:56 ` [PATCH 5/5] cvsserver: Abort if connect to database fails Frank Lichtenheld
2007-03-31 13:57 ` [PATCH] cvsserver: Use DBI->table_info instead of DBI->tables Frank Lichtenheld
2007-03-31 14:09 ` Frank Lichtenheld
2007-04-07 14:52 ` [PATCH 0/3] cvsserver: small corrections and bring documentation up to speed Frank Lichtenheld
2007-04-07 14:58 ` [PATCH 1/3] cvsserver: small corrections to asciidoc documentation Frank Lichtenheld
2007-04-07 14:58 ` [PATCH 2/3] cvsserver: Corrections to the database backend configuration Frank Lichtenheld
2007-04-07 14:58 ` [PATCH 3/3] cvsserver: Add asciidoc documentation for new " Frank Lichtenheld
2007-04-08 8:44 ` Junio C Hamano
2007-04-11 14:34 ` Frank Lichtenheld
2007-04-12 14:43 ` Frank Lichtenheld [this message]
2007-04-13 0:13 ` [PATCH (amend)] " Jakub Narebski
2007-04-13 16:13 ` [PATCH] config.txt: Add gitcvs.db* variables Frank Lichtenheld
2007-04-12 14:54 ` [PATCH] cvsserver: Document the GIT branches -> CVS modules mapping more prominently Frank Lichtenheld
2007-04-12 22:05 ` Junio C Hamano
2007-04-12 22:19 ` Frank Lichtenheld
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11763890161953-git-send-email-frank@lichtenheld.de \
--to=frank@lichtenheld.de \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).