git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH (amend)] cvsserver: Add asciidoc documentation for new database backend configuration

From
Frank Lichtenheld <frank@lichtenheld.de>
Date
Apr 12, 2007, 14:43 UTC
Message-ID
<11763890161953-git-send-email-frank@lichtenheld.de>
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
Previous: Frank LichtenheldNext: Jakub Narebski
Message 18 of 23 in “cvsserver: Make configuration way more flexible”
  1. cvsserver: Make configuration way more flexibleFrank Lichtenheld, Mar 19, 2007
  2. 1/5 cvsserver: Introduce new state variable 'method'Frank Lichtenheld, Mar 19, 2007
  3. 2/5 cvsserver: Handle three part keys in git config correctlyFrank Lichtenheld, Mar 19, 2007
  4. 3/5 cvsserver: Allow to override the configuration per access methodFrank Lichtenheld, Mar 19, 2007
  5. 4/5 cvsserver: Make the database backend configurableFrank Lichtenheld, Mar 19, 2007
  6. Martin LanghoffMar 19, 2007
  7. Frank LichtenheldMar 23, 2007
  8. Frank LichtenheldMar 23, 2007
  9. 5/5 cvsserver: Abort if connect to database failsFrank Lichtenheld, Mar 19, 2007
  10. cvsserver: Use DBI->table_info instead of DBI->tablesFrank Lichtenheld, Mar 31, 2007
  11. Frank LichtenheldMar 31, 2007
  12. 0/3 cvsserver: small corrections and bring documentation up to speedFrank Lichtenheld, Apr 7, 2007
  13. 1/3 cvsserver: small corrections to asciidoc documentationFrank Lichtenheld, Apr 7, 2007
  14. 2/3 cvsserver: Corrections to the database backend configurationFrank Lichtenheld, Apr 7, 2007
  15. 3/3 cvsserver: Add asciidoc documentation for new database backend configurationFrank Lichtenheld, Apr 7, 2007
  16. Junio C HamanoApr 8, 2007
  17. Frank LichtenheldApr 11, 2007
  18. cvsserver: Add asciidoc documentation for new database backend configurationFrank Lichtenheld, Apr 12, 2007
  19. Jakub NarebskiApr 13, 2007
  20. config.txt: Add gitcvs.db* variablesFrank Lichtenheld, Apr 13, 2007
  21. cvsserver: Document the GIT branches -> CVS modules mapping more prominentlyFrank Lichtenheld, Apr 12, 2007
  22. Junio C HamanoApr 12, 2007
  23. Frank LichtenheldApr 12, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.