又看了些书,写了几个读书笔记,想起了以前写的东西都散乱在各处,不成东西,多次作了重复的工作,非常浪费。突然想起这阵子用的CVS正好可以解决一下这个问题,身边也正好有台空闲的机器,就拿他开刀吧。
Google果然是好,搜了一下Debian CVS便出来不少文章,以下记录一下过程。
服务器端:
1. 照他所说,一上来先看有没有安装CVS
whereis cvs
没有,安装之
sudo apt-get install cvs
此处提到CVSD,此为cvs的一个辅助工具,目前俺系菜鸟,尚未有使用的必要。闲话少述,继续。
2. 创建cvs用户和主目录以及cvs用户组,此处不细说了
sudo groupadd cvs
sudo mkdir /home/cvsroot
sudo useradd -g cvs -G cvs -d /home/cvsroot cvsroot
sudo passwd cvsroot
3. 然后更改文件属主及访问权限
chown -R cvsroot.cvs /home/cvsroot
chmod -R 775 /home/cvsroot
4. 切换到cvsroot用户操作
su cvsroot
设置全局变量CVSROOT
export CVSROOT=/home/cvsroot
初始化cvs仓库
cvs init
5. 创建登陆cvs的用户管理文件
touch /home/cvsroot/CVSROOT/passwd
vim /home/cvsroot/CVSROOT/passwd
以以下格式填入内容:
username:password:cvsroot
其中password由以下perl脚本passwdgen.pl生成
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}\n";
运行方法为perl passwdgeg.pl yourpasswd
然后会输出加密后的字符串,填入上面passwd文件中的对应位置即可。
6. 设置开机启动,查看/etc/services中关于cvspserver的选项是否开启,若没有则取消前面的#号
创建cvspserver文件,切换用户
cd /etc/xinetd.d/
在此处我发现我这里没有xinetd.d这个目录,因为没有安装xinetd.d,所以先安装它
sudo apt-get install xinetd
然后进入上述目录
sudo touch cvspserver
vim cvspserver
填入以下内容
service cvspserver
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
log_on_success += USERID
log_on_failure += USERID
}
此处注意每行第一个"="两端要有空格,各选项要顶格写。
然后重启xinetd服务
sudo /etc/init.d/xinetd restart
然后运行
netstat -l|grep cvspserver
看是否cvspserver已经启动
至此服务器端配置完成
客户端测试
1. 首先login
cvs -d ":pserver:username@cvsserveraddress:/home/cvsroot" login
此处username和cvsserveraddress用自己的设置替换,系统会提示输入密码
输入密码,若无回显login成功,若登陆不成功,可以查看服务器段cvspserver是否已经启动,另外察看用户名密码是否匹配。注意passwd文件中保存的为加密字符串。
2. 上传档案
进入你希望cvs管理的代码目录,运行
cvs -d ":pserver:username@cvsserveraddress:/home/cvsroot" import -m "project" projectname username start
此处几个选项 -d指定连接的cvs服务器的名称,import表示操作为导入档案,-m后的选项为log内容,模块名称,装载者,标识符号(具体我还不了解,可以查看文档)
然后开始提交,提交完成。
此处我自己碰到一个问题,就是空目录是会被忽略掉的,而他们是我想上传上去的,估计import的选项中应该有此一项,还不确定。
3. 取出档案
进入你要放从服务器上取下来的档案的目录,运行checkout命令如下:
cvs -d ":pserver:username@cvsserveraddress:/home/cvsroot" login" checkout dirname
其中dirname为你确定的project的名称或存放档案的目录的名称。
如果成功,说明一切OK了。
4. 权限管理
可以在CVSROOT底下建立两个文件,readers和writers。文件中每一行写一个用户名,readers里面的用户具有只读权限,writers用户有读写权限。