| git-cvsserver(1) |
| ================ |
| |
| NAME |
| ---- |
| git-cvsserver - A CVS server emulator for git |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| export CVS_SERVER=git-cvsserver |
| 'cvs' -d :ext:user@server/path/repo.git co <HEAD_name> |
| |
| 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. |
| |
| 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. |
| |
| INSTALLATION |
| ------------ |
| |
| 1. If you are going to offer anonymous CVS access via pserver, add a line in |
| /etc/inetd.conf like |
| + |
| -- |
| ------ |
| cvspserver stream tcp nowait nobody git-cvsserver pserver |
| |
| ------ |
| Note: In some cases, you need to pass the 'pserver' argument twice for |
| git-cvsserver to see it. So the line would look like |
| |
| ------ |
| cvspserver stream tcp nowait nobody git-cvsserver pserver pserver |
| |
| ------ |
| 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. |
| -- |
| 2. For each repo that you want accessible from CVS you need to edit config in |
| the repo and add the following section. |
| + |
| -- |
| ------ |
| [gitcvs] |
| enabled=1 |
| # optional for debugging |
| logfile=/path/to/logfile |
| |
| ------ |
| 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. |
| -- |
| 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: |
| + |
| -- |
| For SSH access, CVS_SERVER should be set to git-cvsserver |
| |
| Example: |
| |
| ------ |
| export CVSROOT=:ext:user@server:/var/git/project.git |
| export CVS_SERVER=git-cvsserver |
| ------ |
| -- |
| 4. For SSH clients that will make commits, make sure their .bashrc file |
| sets the GIT_AUTHOR and GIT_COMMITTER variables. |
| |
| 5. Clients should now be able to check out the project. Use the CVS 'module' |
| name to indicate what GIT 'head' you want to check out. Example: |
| + |
| ------ |
| cvs co -d project-master master |
| ------ |
| |
| Eclipse CVS Client Notes |
| ------------------------ |
| |
| To get a checkout with the Eclipse CVS client: |
| |
| 1. Select "Create a new project -> From CVS checkout" |
| 2. Create a new location. See the notes below for details on how to choose the |
| right protocol. |
| 3. Browse the 'modules' 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. |
| 4. Pick 'HEAD' when it asks what branch/tag to check out. Untick the |
| "launch commit wizard" to avoid committing the .project file. |
| |
| Protocol notes: If you are using anonymous access via pserver, just select that. |
| Those using SSH access should choose the 'ext' protocol, and configure 'ext' |
| access on the Preferences->Team->CVS->ExtConnection pane. Set CVS_SERVER to |
| 'git-cvsserver'. Not that password support is not good when using 'ext', |
| 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 'cvs' effectively calls git-cvsserver. |
| |
| 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 |
| |
| 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. |
| |
| Dependencies |
| ------------ |
| |
| git-cvsserver depends on DBD::SQLite. |
| |
| Copyright and Authors |
| --------------------- |
| |
| This program is copyright The Open University UK - 2006. |
| |
| Authors: Martyn Smith <martyn@catalyst.net.nz> |
| Martin Langhoff <martin@catalyst.net.nz> |
| with ideas and patches from participants of the git-list <git@vger.kernel.org>. |
| |
| Documentation |
| -------------- |
| Documentation by Martyn Smith <martyn@catalyst.net.nz> and Martin Langhoff <martin@catalyst.net.nz> Matthias Urlichs <smurf@smurf.noris.de>. |
| |
| GIT |
| --- |
| Part of the gitlink:git[7] suite |