目录
-
7.1. installation
-
-
7.1.1. chroot
7.2. cvs login | logout
7.3. cvs import
7.4. cvs checkout
7.5. cvs update
7.6. cvs add
7.7. cvs status
7.8. cvs commit
7.9. cvs remove
7.10. cvs log
7.11. cvs annotate
7.12. cvs diff
7.13. rename file
7.14. revision
7.15. cvs export
7.16. cvs release
7.17. branch
-
-
7.17.1. milestone
7.17.2. patch branch
7.18. keywords
7.1. installation
过程 7.1. install cvs
-
install
$ sudo apt-get install xinetd $ sudo apt-get install cvs
show the cvs version
$ cvs -v Concurrent Versions System (CVS) 1.12.13 (client/server)
-
create cvs group and cvsroot user
$ sudo groupadd cvs $ sudo adduser cvsroot --ingroup cvs
change user become cvsroot
$ su - cvsroot
-
initialization 'CVSROOT'
$ cvs -d /home/cvsroot init
if you have successed, you can see CVSROOT directory in the '/home/cvsroot'
$ ls /home/cvsroot/ CVSROOT
-
authentication
default SystemAuth=yes, you can use system user to login cvs.
but usually, we don't used system user because it isn't security.
SystemAuth = no
edit '/home/cvsroot/CVSROOT/config' make sure SystemAuth = no
$ vim /home/cvsroot/CVSROOT/config SystemAuth = no
create passwd file
the format is user:password:cvsroot
you need to using htpasswd command, if you don't have, please install it as the following
$ sudo apt-get install apache2-utils
or
$ perl -e 'print("userPassword: ".crypt("secret","salt")."\n");'
or
$ cat passwd #!/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"; $ ./passwd "mypasswd" atfodI2Y/dcdc
let's using htpasswd to create a passwd
$ htpasswd -n neo New password: Re-type new password: neo:yA50LI1BkXysY
copy 'neo:yA50LI1BkXysY' and add ':cvsroot' to the end
$ vim /home/cvsroot/CVSROOT/passwd neo:yA50LI1BkXysY:cvsroot nchen:GXaAkSKaQ/Hpk:cvsroot
-
Go into directory '/etc/xinetd.d/', and then create a cvspserver file as the following.
$ sudo vim /etc/xinetd.d/cvspserver service cvspserver { disable = no flags = REUSE socket_type = stream wait = no user = cvsroot server = /usr/bin/cvs server_args = -f --allow-root=/home/cvsroot pserver log_on_failure += USERID }
-
check cvspserver in the '/etc/services'
$ grep cvspserver /etc/services cvspserver 2401/tcp # CVS client/server operations cvspserver 2401/udp
-
restart xinetd
$ /etc/init.d/xinetd Usage: /etc/init.d/xinetd {start|stop|reload|force-reload|restart}
-
port
$ nmap localhost -p cvspserver Starting Nmap 4.53 ( http://insecure.org ) at 2008-11-14 16:21 HKT Interesting ports on localhost (127.0.0.1): PORT STATE SERVICE 2401/tcp open cvspserver Nmap done: 1 IP address (1 host up) scanned in 0.080 seconds
-
firewall
$ sudo ufw allow cvspserver
environment variable
CVSROOT=:pserver:username@ip:/home/cvsroot
vim .bashrc export CVS_RSH=ssh export CVSROOT=:pserver:neo@localhost:/home/cvsroot
test
$ cvs login Logging in to :pserver:neo@localhost:2401/home/cvsroot CVS password: neo@netkiller:/tmp/test$ cvs co test cvs checkout: Updating test U test/.project U test/NewFile.xml U test/newfile.php neo@netkiller:/tmp/test$
7.1.1. chroot
$ sudo apt-get install cvsd
environment variable
neo@netkiller:~/workspace/cvs$ export CVSROOT=:pserver:neo@localhost:/home/cvsroot
ssh
export CVS_RSH=ssh export CVSROOT=:ext:$USER@localhost:/home/cvsroot
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。