You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
5.1 KiB
166 lines
5.1 KiB
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 should set the -k mode to binary when relevant, however, |
|
this is not really implemented yet. For now, you can force the server |
|
to set `-kb` for all files by setting the `gitcvs.allbinary` config |
|
variable. 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>, Martin Langhoff <martin@catalyst.net.nz>, and Matthias Urlichs <smurf@smurf.noris.de>. |
|
|
|
GIT |
|
--- |
|
Part of the gitlink:git[7] suite
|
|
|