.\"Generated by db2man.xsl. Don't modify this, modify the source. .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "GIT-CVSSERVER" 1 "" "" "" .SH NAME git-cvsserver \- A CVS server emulator for git .SH "SYNOPSIS" .nf export CVS_SERVER=git\-cvsserver \fIcvs\fR \-d :ext:user@server/path/repo\&.git co .fi .SH "DESCRIPTION" This application is a CVS emulation layer for git\&. It is highly functional\&. However, not all methods are implemented, and for those methods that are implemented, not all switches are implemented\&. Testing has been done using both the CLI CVS client, and the Eclipse CVS plugin\&. Most functionality works fine with both of these clients\&. .SH "LIMITATIONS" Currently cvsserver works over SSH connections for read/write clients, and over pserver for anonymous CVS access\&. CVS clients cannot tag, branch or perform GIT merges\&. .SH "INSTALLATION" .TP 3 1. If you are going to offer anonymous CVS access via pserver, add a line in /etc/inetd\&.conf like .nf cvspserver stream tcp nowait nobody git\-cvsserver pserver .fi .nf Note: In some cases, you need to pass the 'pserver' argument twice for git\-cvsserver to see it\&. So the line would look like .fi .nf cvspserver stream tcp nowait nobody git\-cvsserver pserver pserver .fi .nf No special setup is needed for SSH access, other than having GIT tools in the PATH\&. If you have clients that do not accept the CVS_SERVER env variable, you can rename git\-cvsserver to cvs\&. .fi .TP 2. For each repo that you want accessible from CVS you need to edit config in the repo and add the following section\&. .nf [gitcvs] enabled=1 # optional for debugging logfile=/path/to/logfile .fi .nf 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\&. .fi .TP 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 appropriate git repo\&. For example: .nf For SSH access, CVS_SERVER should be set to git\-cvsserver .fi .nf Example: .fi .nf export CVSROOT=:ext:user@server:/var/git/project\&.git export CVS_SERVER=git\-cvsserver .fi .TP 4. For SSH clients that will make commits, make sure their \&.bashrc file sets the GIT_AUTHOR and GIT_COMMITTER variables\&. .TP 5. Clients should now be able to check out the project\&. Use the CVS \fImodule\fR name to indicate what GIT \fIhead\fR you want to check out\&. Example: .nf cvs co \-d project\-master master .fi .LP .SH "ECLIPSE CVS CLIENT NOTES" To get a checkout with the Eclipse CVS client: .TP 3 1. Select "Create a new project \-> From CVS checkout" .TP 2. Create a new location\&. See the notes below for details on how to choose the right protocol\&. .TP 3. Browse the \fImodules\fR available\&. It will give you a list of the heads in the repository\&. You will not be able to browse the tree from there\&. Only the heads\&. .TP 4. Pick \fIHEAD\fR when it asks what branch/tag to check out\&. Untick the "launch commit wizard" to avoid committing the \&.project file\&. .LP Protocol notes: If you are using anonymous acces via pserver, just select that\&. Those using SSH access should choose the \fIext\fR protocol, and configure \fIext\fR access on the Preferences\->Team\->CVS\->ExtConnection pane\&. Set CVS_SERVER to \fIgit\-cvsserver\fR\&. Not that password support is not good when using \fIext\fR, you will definitely want to have SSH keys setup\&. Alternatively, you can just use the non\-standard extssh protocol that Eclipse offer\&. In that case CVS_SERVER is ignored, and you will have to replace the cvs utility on the server with git\-cvsserver or manipulate your \&.bashrc so that calling \fIcvs\fR effectively calls git\-cvsserver\&. .SH "CLIENTS KNOWN TO WORK" CVS 1\&.12\&.9 on Debian CVS 1\&.11\&.17 on MacOSX (from Fink package) Eclipse 3\&.0, 3\&.1\&.2 on MacOSX (see Eclipse CVS Client Notes) TortoiseCVS .SH "OPERATIONS SUPPORTED" All the operations required for normal use are supported, including checkout, diff, status, update, log, add, remove, commit\&. Legacy monitoring operations are not supported (edit, watch and related)\&. Exports and tagging (tags and branches) are not supported at this stage\&. The server will set the \-k mode to binary when relevant\&. In proper GIT tradition, the contents of the files are always respected\&. No keyword expansion or newline munging is supported\&. .SH "DEPENDENCIES" git\-cvsserver depends on DBD::SQLite\&. .SH "COPYRIGHT AND AUTHORS" This program is copyright The Open University UK \- 2006\&. Authors: Martyn Smith Martin Langhoff with ideas and patches from participants of the git\-list \&. .SH "DOCUMENTATION" Documentation by Martyn Smith and Martin Langhoff Matthias Urlichs \&. .SH "GIT" Part of the \fBgit\fR(7) suite