第 178 章 cvs - Concurrent Versions System

178.1. installation

过程 178.1. install cvs

  1. 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)
    			
  2. create cvs group and cvsroot user
    $ sudo groupadd cvs
    $ sudo adduser cvsroot --ingroup cvs
    			

    change user become cvsroot

    $ su - cvsroot
    			
  3. initialization 'CVSROOT'
    $ cvs -d /home/cvsroot init
    			

    if you have successed, you can see CVSROOT directory in the '/home/cvsroot'

    $ ls /home/cvsroot/
    CVSROOT
    			
  4. 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
    			
  5. 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
    }
    			
  6. check cvspserver in the '/etc/services'
    $ grep cvspserver /etc/services
    cvspserver      2401/tcp                        # CVS client/server operations
    cvspserver      2401/udp
    			
  7. restart xinetd
    $ /etc/init.d/xinetd
    Usage: /etc/init.d/xinetd {start|stop|reload|force-reload|restart}
    			
  8. 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
    			
  9. 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$
	

178.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 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

时间: 2024-10-10 01:52:19

第 178 章 cvs - Concurrent Versions System的相关文章

178.2. cvs login | logout

neo@netkiller:~/workspace/cvs$ cvs login Logging in to :pserver:neo@localhost:2401/home/cvsroot CVS password: logout $ cvs logout Logging out of :pserver:neo@localhost:2401/home/cvsroot Please enable JavaScript to view the <a href="https://disqus.

178.7. cvs status

$ cvs status dir1/file1 cvs status: use `cvs add' to create an entry for `dir1/file1' =================================================================== File: file1             Status: Unknown    Working revision:  No entry for file1    Repository r

178.10. cvs log

let me create a file, and then modify the file to make several version $ touch file $ echo helloworld > file $ cvs add file cvs add: scheduling file `file' for addition cvs add: use `cvs commit' to add this file permanently $ cvs commit -m 'add file

178.3. cvs import

cvs import -m "write some comments here" project_name vendor_tag release_tag $ cvs import -m "write some comments here" project_name vendor_tag release_tag 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明.

178.9. cvs remove

  $ rm -rf new_file $ cvs remove new_file cvs remove: scheduling `new_file' for removal cvs remove: use `cvs commit' to remove this file permanently $ cvs commit -m "delete file" new_file /home/cvsroot/project_name/new_file,v  <--  new_file n

178.11. cvs annotate

$ cvs annotate file Annotations for file *************** 2.2          (nchen    26-Nov-08): I am Neo 2.2          (nchen    26-Nov-08): My nickname netkiller 2.3          (nchen    26-Nov-08): I'm from shenzhen 1.4          (neo      24-Nov-08): I am

178.15. cvs export

cvs export -r release_1_0 project_name $ cvs export -r release_1_0 project_name cvs export: Updating project_name U project_name/file cvs export: Updating project_name/dir1 U project_name/dir1/file1 cvs export: Updating project_name/dir2 U project_na

178.4. cvs checkout

$ cvs checkout project_name cvs checkout: Updating project_name checkout before cvs checkout -r release_1_0 project_name $ cvs checkout -r release_1_0 project_name cvs checkout: Updating project_name U project_name/file cvs checkout: Updating project

178.12. cvs diff

neo@netkiller:~/workspace/cvs/project_name$ cvs diff -r1.3 -r1.4 file Index: file =================================================================== RCS file: /home/cvsroot/project_name/file,v retrieving revision 1.3 retrieving revision 1.4 diff -r1