1 / 22

From CVS to Subversion

Joachim “Joe” Feise UC Irvine, Information & Computer Sciences http://www.feise.com/~jfeise/. From CVS to Subversion. Why Version Control?. Avoiding accidental overwrites History of changes Who changed what when? Who is to blame (or praise)? What was the state x days/months/… ago?

taryn
Download Presentation

From CVS to Subversion

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Joachim “Joe” Feise UC Irvine, Information & Computer Sciences http://www.feise.com/~jfeise/ From CVS to Subversion

  2. Why Version Control? • Avoiding accidental overwrites • History of changes • Who changed what when? Who is to blame (or praise)? • What was the state x days/months/… ago? • Management tool 2

  3. Traditional Version Control • Lock-modify-unlock • Example systems • RCS, SCCS, Perforce, VSS, … • Results in serialization of access • Lock file, edit file, unlock file • Restrictive: lock prevent others from modifying file • May cause administrative problems • Long locks cause delays • Makes collaboration harder • Manual unlocking may be necessary • Scenario: forgetting to unlock before going on vacation 3

  4. CVS Advantages • Copy-modify-merge • Files are copied to a local area, and modified there • No locking • Changes are only visible after merge • Merge is the hard part • Automatic merge • Only works with small changes • Manual merge • Markers in files • Binary files are not merged 4

  5. Basic CVS Configuration • Creating the archive • addgroup cvs; adduser cvs • cvs –d /path/to/repository init • Adjust owner/group, set sticky group bit • Add users to cvs group • Importing files • Recreates existing file structure in CVS • cvs -m “initial checkin” top-directory vendor-tag release-tag 5

  6. CVS Network Access • rsh • Don't use it! • pserver • Listening on port 2401 by default • Add entry to /etc/inetd.conf • Beware: password transmitted in CLEARTEXT • Separate CVS password is possible (CVSROOOT/passwd) 6

  7. Secure Network CVS • SSH • CVS_RSH=ssh; export CVS_RSH • cvs -d :ext:user@server.name:/path/to/repository command • User has to have shell account • gserver, kserver • For Kerberos, Windows (SSPI) 7

  8. Secure CVS Sandbox • Using sendmail's smrsh • cvs wrapper does the chroot • Needs a static version of cvs • LDFLAGS=-static ./configure –disable-client; make • Allows multiple chrooted repositories • Details: http://freshmeat.net/projects/idx-chrooted-ssh-cvs/ 8

  9. Secure CVS Sandbox, continued • cvs users home directories mkdir -p home chown 0:0 home • chrooted environment for each project mkdir -p <project>/{bin,chrooted-cvs,smrsh.bin} mkdir -p <project>/chrooted-cvs/{bin,cvs,cvs-locks,dev,etc,tmp} chown 0:0 <project>/chrooted-cvs/{bin,dev,etc,tmp} chmod 1777 <project>/chrooted-cvs/tmp • setting access rights chown cvsowner.cvs <project>/chrooted-cvs/cvs chmod 770 <project>/chrooted-cvs/cvs chown 0:0 <project>/chrooted-cvs/cvs-locks chmod 666 <project>/chrooted-cvs/cvs-locks • create /dev/null (major/minor specific to Linux) mknod <project>/chrooted-cvs/dev/null c 1 3 • Create /etc/passwd and /etc/group in the chrooted environment 9

  10. Eclipse CVS Demo • CVS support included in base install • SSH2 support included since Eclipse 3.0 10

  11. CVS Drawbacks • Cleartext password • Complex chroot, ssh setup for security • Checkin not atomic • No cross-directory locks • Rename/Move loses history • No directory versioning • Deleted files end up in special Attic directory • Special flags for binary files needed 11

  12. Subversion • Copy-modify-merge model • Like CVS • Successor to CVS • Some of the same people • Clean, modular code • Metadata (properties) • Name, value pairs • Values can be files • Versioned, too • Easy migration path 12

  13. Subversion Advantages • Versioned directories • Allows to recreate the exact state • Atomic checkins • Everything is a transaction • Rename/move maintains history • Unified binary/text file handling • Uses database for the archive • Hot backup possible • Minimizes network traffic • Pristine copy is stored locally 13

  14. Subversion Configuration • Creating the archive • Archive can not be on a network share • svnadmin create /path/to/repos • svn import <project> file:///path/to/repos/some/project • Access through URIs • file://localhost/path/to/repos • svn://domain.com:port/path/to/repos • http://domain.com:port/path/to/repos • https://domain.com:port/path/to/repos 14

  15. Subversion Network Access • svnserve • Lightweight server • Listening on port 3690 by default • Runs as daemon or through entry to /etc/inetd.conf • Runs as specific user • -r option restricts operations to specific path • CRAM-MD5 (RFC 2195) authentication challenge protocol • Can be tunneled through SSH • Apache 2 • Port 80 is usually open • Takes advantage of Apache's authentication modules • Repository has to be writeable by Apache 15

  16. Secure Subversion • svnserve • Tunneling through SSH • Variant of the svn: scheme • svn+ssh://domain.com:port/path/to/repos • Apache 2 • mod_svn module • Authentication through Apache • basic, digest, ldap, ... • no shell access • SSL (https) for encryption 16

  17. Subversion Hooks • Triggered by repository event • Different commit stages • Post-commit hook usually used to send emails, modify log files or make backups • Hooks for changing special properties • Sample hook scripts provided 17

  18. Subversion Cautions • Permissions • Ownership and permission of the repositories • Access through multiple methods • Umask settings • Different process owners • e.g., nobody for Apache, users for direct access, ... • For svn+ssh:, sticky group bit necessary • Some clients not yet polished enough 18

  19. CVS to Subversion • Conversion tool: cvs2svn • http://cvs2svn.tigris.org/ • Can convert branches • Handles tags 19

  20. Eclipse Subversion Demo • Subclipse plugin • Install via Help/Software Updates/New Updates • http://subclipse.tigris.org/update • Requires svn command line tool • Quirk with SSL (https) • no dialog box to accept certificate • certificate has to be accepted with command line 20

  21. Books • CVS • “Cederquist” (http://www.cvshome.org/docs/manual) • Open Source Development with CVS (http://cvsbook.red-bean.com/) • CVS Pocket Reference • Essential CVS • … • Subversion • Version Control with Subversion (http://svnbook.red-bean.com/) 21

  22. Links • CVS • http://www.cvshome.org/ • GUI clients • http://www.kde.org/apps/cervisia/ • http://www.wincvs.org/ • http://www.tortoisecvs.org/ • chroot+SSH • http://freshmeat.net/projects/idx-chrooted-ssh-cvs/ • Subversion • http://subversion.tigris.org/ • GUI clients • http://rapidsvn.tigris.org/ • http://tortoisesvn.tigris.org/ • http://svnup.tigris.org/ • Eclipse plugin • http://subclipse.tigris.org 22

More Related