`
晨星★~雨泪
  • 浏览: 448209 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HOWTO CVS Server

阅读更多

Contents

[hide]

[edit] Introduction

If you've ever had some sort of programming project where you didn't want to turn your code into a disorganized soup of text files, you probably have had the idea of setting up a CVS server. While I will not explain what CVS "is" (you can read all about it here), what I will try to do here is tell you how to set up a CVS server from start to finish. A more modern orientated program which does virtually the same is Subversion also known as svn. For the gentoo-wiki enty click here

Remark, that this HOWTO describes how to access a CVS using the pserver protocol. This protocol is insecure, as it transfers passwords in plain text. A more secure approach is to access CVS via SSH with public key authorization.

[edit] Installation

# USE="server" emerge cvs
# emerge cvsd

That took care of the installation part. You have a nice and operable CVS client ("cvs"), and the CVS daemon that will be running on your system in order to make it a functional CVS server. CVS must be built with the "server" USE flag or else CVSD will not work properly. Whenever someone attempts to connect, you will get this error:

 cvs [login aborted]: unrecognized auth response from <host> cvs: unrecognized option `--allow-root=/root'

[edit] Create a CVS Jailroot

Now, you have to decide where you would like to place your CVS jailroot. This jailroot is a directory where the CVS repository will be held, and other things like configuration, (encrypted) CVS user passwords, etc. A good location to put your jailroot in is /var/lib/cvsd, which hereafter will be the meaning of "jailroot" in this document.

Let us set it up the CVS jailroot:

# mkdir /var/lib/cvsd
# cvs -d /var/lib/cvsd/root init
# cvsd-buildroot /var/lib/cvsd
# cd /var/lib/cvsd
# mkdir -p var/lock

Now our CVS jailroot is done. Our next task is to configure cvsd to run properly, and here is how it's done:

 

Tip: cvsd doesn't work correctly if its jail is on filesystem with nodev

Fire up your favourite editor (I like nano, very Gentoo-ish. And yes, still as root!):

# nano -w /etc/cvsd/cvsd.conf

Here is what you have to look for in the config and modify accordingly so the lines you modify look like this (Note - just modify the lines that look like the ones in the box to say exactly what they say in the box; do not make your whole file look like that! Also, make sure that the whole file ends in a newline):

File: /etc/cvsd/cvsd.conf
RootJail /var/lib/cvsd
Uid cvsd
Gid cvsd
Listen * 2401 # or whatever port you'd like it to listen on, up to you
Repos /root

When you're done modifying, press CTRL+O, then <ENTER>, and finally CTRL+X to quit nano.

[edit] Add Users

There is one more thing you need to set up - users. CVS obviously has to have users, otherwise you will never know who is responsible for the various source files! So here it is:

# cvsd-passwd /var/lib/cvsd/root YOUR_USER_HERE

You will be prompted for a password, where I'm sure you know what to do. If you are extra-clever, you might realize that making the user name "anonymous" and not entering a password (just pressing ENTER will do) will create an anonymous CVS user. Woohoo!

  • NOTE: To create a user that has only read rights follow the next steps:
# touch /var/lib/cvsd/root/CVSROOT/readers
# chown cvsd:cvsd /var/lib/cvsd/root/CVSROOT/readers
# nano /var/lib/cvsd/root/CVSROOT/readers

Add the users you just created to this file, each user seperated by a new line. Do not forget to put a new line after the last user. This setting only allows readers to the repository, to allow writers, create a file writers on same path.

  • If a user is in the readers file the user is only allowed to read, regardless of whether or not they are in the writers file. If the user is in the writers file and not the readers file they can both read and write.

Example:

File: /var/lib/cvsd/root/CVSROOT/readers
guest
anonymous
john

[edit] Apply Correct Permissions

Once you're done setting up your various users, there are three more things to do:

  1. Change the permissions/ownership of your cvs directory
  2. Restart cvsd
  3. Add cvsd to your runlevel (if you want to)

1. Changing permissions and ownership. As root:

# cd /var/lib
# chown -R cvsd:cvsd cvsd
# chmod -R 775 /var/lib/cvsd/root

2. (Re)starting cvsd, your CVS daemon. As root:

# /etc/init.d/cvsd restart

3. If you'd like to, we can set it up so your CVS daemon starts up whenever your system does:

# rc-update add cvsd default

And now you are done. Read up on how to use the CVS client ("man cvs"), and keep your code organized.

- Kirill Zorin.

[edit] Quick local test

[edit] Common method

1. Set your CVSROOT environment var (:pserver:<username>@<host>:/cvsdirectory)

# CVSROOT=:pserver:YOUR_USER_HERE:PASSWORD@localhost:/root; export CVSROOT

2. Login

# cvs login

3. Import/Checkout something (See below)

4. Logout

# cvs logout

[edit] Import/Checkout something

1. (Optional) Import your first project into cvs

# cvs import -m 'Example01 project' example01 vendor start

Note:
Make sure your cvs user name is in /var/lib/cvsd/root/CVSROOT/writers and not in "CVSROOT/readers".
example01 is the name of the project,vendor is the vendor tag (can be anything) start is the release tag (can be anything which identifies the release)

all 3 fields must be included

Also note that this command will import everything in your current working directory, so if you wanted to import all the files in ~/example1/, you should cd into that directory, then execute the cvs import command. When you check out the files later, cvs will create a directory with the same name as the project to keep things neat.

2. (Optional) Checkout your first project from cvs

# cvs -d myExmp01 co -A example01

[edit] Tips and Tricks

Delete all CVS Folders:

 # find ./* -type d | grep CVS | sed "s/^/rm -rf /" | sh


This variation will handle properly folders with spaces in their names and will handle hidden folders.

find -type d | grep CVS | sed "s/^/rm -rf \"/"|sed "s/$/\"/" | sh

[edit] Finally

Don't forget to route the port 2401 into your firewall

[edit] Potential Errors

The cvsd-1.0.2 build has a problem running the cvsd-buildroot command in which it does not copy all the libraries that are needed for the server to run correctly. If you are experiencing this error

cvs [login aborted]: reading from server: Connection reset by peer

Then use the following commands to fix this problem.

# cp /lib/ld-* /path/to/cvsdir/lib/
# cp /lib/libdl.so.2 /path/to/cvsdir/lib/
# cp /lib/ld.so.1 /path/to/cvsdir/lib/

(note: with the above setup /path/to/cvsdir/lib/ is /var/lib/cvs/lib/)

Related Bug Report: Bug 87124

Related Forum Discussion: CVSD help

[edit] SSH Mode

[edit] Access on a local server

You can very easily use cvsd in the more secure ssh mode if you already have sshd set up. You may want to skip the step where you create pserver users:

 # cvsd-passwd /var/lib/cvsd/root YOUR_USER_HERE

If you already did that, you can reverse it by simply editing the file CVSROOT/passwd so that it is blank. This disables the pserver mode.

To give users on your server access to the cvs repository, issue the following commands:

 # chmod -R 775 /var/lib/cvsd/root
 # gpasswd -a USERNAME cvsd

Repeat the second line for each user who needs access to cvs. Now any user that can access your server via ssh who also belongs to the cvsd group can access the cvs repository by setting CVSROOT as follows:

 # CVSROOT=:ext:YOUR_USER_HERE@YOUR_HOST_NAME:/var/lib/cvsd/root; export CVSROOT

If your client is not running a recent Gentoo version, you may also have to set CVS_RSH as follows:

 # CVS_RSH=ssh;export CVS_RSH

[edit] Access through a gateway

In theory you can define CVS_RSH to be any valid command which gives you a remote command interpreter. Namely as long as this scheme works, then CVS can use this particular CVS_RSH as a means to perform the neccesary tasks:

 # $CVS_RSH YOUR_USER_HERE@YOUR_HOST_NAME SOME_COMMAND

Now suppose your cvs server is on a machine called INTERNAL, and you have to login to an ssh gateway machine called GATEWAY first. Then you can define CVS_RSH:

 # export CVS_RSH=gateway_ssh 

Now fireup your favorite editor, put these lines in your gateway_ssh file:

 # #!/bin/sh
 ssh -t user@gateway ssh "$@"

Now let's save it in a directory which is in your $PATH, and conduct a basic test:

 # gateway_ssh YOUR_USER_HERE@INTERNAL ls

You should see a list of files on INTERNAL.

Now edit your CVSROOT variable:

 # export CVSROOT=":ext:INTERNAL:/var/lib/cvsd/root"

And you should be able to use cvs from your home computer now!

[edit] Combining pserver and SSH Mode

It is possible to use pserver mode and ssh mode at the same time. Just setup your server to use pserver. Create all pserver users with

 # cvsd-passwd /var/lib/cvsd/root YOUR_USER_HERE

and setup ssh like above:

 # chmod -R 775 /var/lib/cvsd/root
 # gpasswd -a USERNAME cvsd


Please note that the path to the repository is different for pserver and ssh.

 # CVSROOT=:pserver:YOUR_USER_HERE@YOUR_HOST_NAME:/root; export CVSROOT  #pserver
 # CVSROOT=:ext:YOUR_USER_HERE@YOUR_HOST_NAME:/var/lib/cvsd/root; export CVSROOT  #ssh
分享到:
评论

相关推荐

    cvs server安装与Eclipse简单使用

    4. **版本控制操作**:现在,你可以开始使用CVS的基本操作,如"Add to Version Control"(添加文件到版本库)、"Commit"(提交更改)、"Update"(更新到最新版本)等。 5. **协同工作**:当团队成员对同一文件进行...

    Building CVS server on Windows

    ### 构建Windows上的CVS服务器 #### 一、引言 版本控制系统是软件开发过程中不可或缺的工具之一,它能够帮助团队成员管理源代码的变化历史,实现多人协作下的代码版本控制。CVS(Concurrent Versions System)作为...

    cvs server

    cvsnt-server-2.5.04.3236.msi cvs服务端 源码管理类

    CVS Server-A流媒体服务器快速使用手册(V1R1)

    **CVS Server-A流媒体服务器快速使用手册** CVS Server-A是一款专为高效、稳定、安全的流媒体传输设计的专业服务器软件。它支持多种流媒体协议,如RTSP、RTMP、HLS、HTTP Live Streaming等,适用于直播、点播等多种...

    cvs2svn-2.4.0.tar.gz

    The document you are currently reading contains a lot of general information about converting from CVS, and specifically how to use cvs2svn to convert your repository to Subversion. cvs2git....

    CVS学习笔记!!!!!!!!!!!!!!!!!!!

    2. **配置仓库**:打开控制面板中的“CVSNT Server”选项,找到“Repository configuration”标签页,点击“add”按钮并浏览至 F 盘中的 `cvsserver` 目录。 3. **设置标签**:选择“about”标签页,进行必要的设置...

    Linux 下配置 CVS服务器CentOS(CentOS 5.2)

    cvspserver 2401/tcp # pserver cvs service cvspserver 2401/udp # pserver cvs service ``` 3. **启动CVS服务**: - 使用`# /etc/rc.d/init.d/xinetd restart`或`# service xinetd restart`重新启动xinetd服务...

    用一个cvs server管理多个项目的版本.doc

    server_args = --allow-root=/opt/cvs --allow-root=/opt/hkmc --allow-root=/opt/aps pserver ``` 这样,CVS服务器就可以处理来自不同项目目录的请求了。 2. **添加用户和设置权限**: 创建与项目关联的用户组...

    Eclipse整合CVS版本管理详解

    使用 Eclipse 内置的 CVS 功能浏览 CVSServer 上的仓库资源,了解项目结构和版本历史。 **5.3 从CVS服务器上检出资源** 检出 CVSServer 上的资源到本地 Eclipse 工作空间,以便开始开发工作。 **5.4 提交修改到...

    linux下cvs安装配置全过程

    cvsserver stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/home/cvsroot pserver 如果是使用 xinetd 的系统,需要在 /etc/xinetd.d/ 目录下创建文件 cvspserver,内容如下: # default: on # ...

    linux下的cvs

    cvspserver 2401/tcp # CVS client/server operations cvspserver 2401/udp # CVS client/server operations ``` 接着,根据系统版本的不同,可能还需要编辑`/etc/inetd.conf`或`/etc/xinetd.d/cvspserver`文件来...

    centos5 cvs安装与配置

    server = /usr/bin/cvs env = HOME=/var/cvs server_args = -f --allow-root=/home/cvsroot/ pserver bind = 192.168.18.3 } ``` 启动 CVS 服务 保存配置文件后,我们需要重启服务: ``` [root@RHEL ~]# /etc/...

    解决CVS 中文乱码问题 一切OK

    在IT行业中,版本控制系统是开发团队协作的重要工具,其中CVS(Concurrent Versions System)是一个广泛应用的开源版本控制系统。然而,对于中文环境的用户来说,CVS在处理中文文件名或内容时可能会出现乱码问题,这...

    单机 CVS系统的搭建

    这里以“CVSServer”为例,选择或新建一个文件夹,并指定其路径为“E:\CVSServer”。当出现“Do you want to initialise it?”对话框时,选择“是”,完成知识库的初始化配置。 2. **知识库初始化** 初始化过程会...

    cvs服务器快速使用手册

    ### CVS服务器快速使用手册知识点详解 #### 一、CVS简介与应用场景 CVS(Concurrent Version System),即并行版本系统,是一种广泛应用于软件开发中的版本控制系统。它旨在解决团队协作开发过程中常见的版本控制...

    how-to-use-cvs.pdf

    ### CVS (Concurrent Versions System) 基本使用与概念 **CVS(并发版本系统)**是一种广泛使用的版本控制系统,特别适用于软件开发项目及文档撰写。它通过网络操作,支持多人协同工作,确保每位开发者可以对同一...

    CVS完全手册--CVS一本通

    其中,`&lt;user&gt;`是你的用户名,`&lt;server&gt;`是服务器地址,`&lt;port&gt;`是服务器端口,`/path/to/cvsroot`是CVS根目录。高级用户可以选择使用SSH加密口令和数据流,设置`CVS_RSH=ssh`。 ### 登录CVS服务器 首次登录,运行`...

    CVS的配置 CVS的配置

    【CVS配置详解】 CVS(Concurrent Versions System)是一种广泛使用的版本控制系统,它允许团队成员协同工作并跟踪代码的变化。在Windows环境下,通常使用CVSNT作为CVS的实现,因为它提供了对Windows系统的良好支持...

    CVS教学电子书如何安装CVS,CVS使用

    **CVS(Concurrent Versions System)**是一种广泛使用的版本控制系统,尤其在开源软件开发中扮演着重要角色。它能够跟踪代码的变化,管理多个开发者协作时的版本冲突,并提供了历史记录和回滚功能,使得团队协作...

Global site tag (gtag.js) - Google Analytics