20
Concurrent Versioning System Indian Linux Users Group-Chennai Project Version Management with CVS K.Bala Vignesh [email protected] Indian Linux Users Group -Chennai Concurrent Versions System

Version Management with CVS

Embed Size (px)

Citation preview

Concurrent Versioning System Indian Linux Users Group­Chennai

Project Version Management with CVS

K.Bala [email protected]

Indian Linux Users Group ­Chennai

Concurrent Versions System

Concurrent Versioning System Indian Linux Users Group­Chennai

Versioning Software – Why Bother?

● Projects get messy● Unnecessary Duplication● Working with other developers is hard!● Difficult for comparison● No Revert Back

Concurrent Versioning System Indian Linux Users Group­Chennai

The Goals of Version Management

● Record Keeping– Any previous version available at any moment

● Collaboration– Ease synchronization between developers

Concurrent Versioning System Indian Linux Users Group­Chennai

"I created CVS to be able to cooperate with my students Erik Baalbergen and Maarten Waage on the ACK (Amsterdam Compiler Kit) C compiler. 

The three of us had vastly different schedules (one student was a steady 9­5 worker, the other was irregular, and I could work on the project 

only in the evenings). Their project ran from July 1984 to August 1985. CVS was initially called cmt, for the obvious reason that it allowed us to 

commit versions independently."

— Dick Grune, Dick Grune's website

History Of  CVS

Concurrent Versioning System Indian Linux Users Group­Chennai

Sand Box

Repository

Terminology

Sand BoxSand Box

Check Out

First Time

Commit

Update

Concurrent Versioning System Indian Linux Users Group­Chennai

Devi Local Version 1.1

Muthu Local Version 1.1

Asha Local Version 1.1

The “Repository”

Checkout<?php

echo “Hello World”;

?>

a.php Version 1.1

Concurrent Versioning System Indian Linux Users Group­Chennai

Devi Local Version 1.2

Muthu Local Version 1.1

Asha Local Version 1.1

The “Repository”

Make Change and Commit

I changed 

logic

<?php

echo “Hello World”;echo “hi”;

?>

a.php Version 1.1

Commit

Concurrent Versioning System Indian Linux Users Group­Chennai

Devi Local Version 1.2

Muthu Local Version 1.1

Asha Local Version 1.2

The “Repository”

Update

I need Up to DateUpdate

Concurrent Versioning System Indian Linux Users Group­Chennai

Devi Local Version 1.2

Muthu Local Version 1.1

Asha Local Version 1.2

The “Repository”

Commit and Conflict

I Changed Code.

<?phpprint  “Hello World”;?>

a.php Version 1.1

<?php

echo “Hello World”;echo “hi”;

?>

Concurrent Versioning System Indian Linux Users Group­Chennai

Devi Local Version 1.2

Muthu Local Version 1.1

Asha Local Version 1.2

The “Repository”

Update and then Commit

Commit

Old Version. So,Update First

Error

Concurrent Versioning System Indian Linux Users Group­Chennai

Devi Local Version 1.2

Muthu Local Version 1.1

Asha Local Version 1.2

The “Repository”

Conflicts

Update

Concurrent Versioning System Indian Linux Users Group­Chennai

<?php

echo “Hello World”;

?>

a.php Version 1.1 a.php Version 1.2

<?php

echo “Hello World”;echo “hi”;

?>

<?php

print “Hello World”;

?>

a.php Version 1.1

<?php

echo “Hello World”;

?>

Update

Conflicts

a.php Version 1.3

<?php

print “Hello World”;echo “hi”;

?>

Conflicts

<?php<<<<<a.phpprint “Hello World”;=======Echo “Hello World”;echo “hi”;>>>>>>1.2?>

Concurrent Versioning System Indian Linux Users Group­Chennai

Devi Local Version 1.2

Muthu Local Version 1.3

Asha Local Version 1.2

The “Repository”

Conflicts Corrected

Commit

a.php Version 1.3

<?php

print “Hello World”;echo “hi”;

?>

Concurrent Versioning System Indian Linux Users Group­Chennai

Other Features

• Creating snapshot using Tags.

• Creating branches of the project. 

• Pserver  for remote Client­Server.

• Finding out who did what (Log messages)

• Revert back to any position.

• Watching the files.

Concurrent Versioning System Indian Linux Users Group­Chennai

CVS and OS Support

● Relatively simple● Available on a wide number of platforms● Clients

– Most Linux distributions come with CLI client– Available for Mac & Win32, CLI & GUI

● Server– Linux CLI program is the server– Win32 server available

Concurrent Versioning System Indian Linux Users Group­Chennai

● Linux– Generally comes with your distribution

● Windows– CVSNT ­ http://cvsnt.org

● Mac OS X– Comes with the free developer tools

CVS Server

Concurrent Versioning System Indian Linux Users Group­Chennai

● Free    pcl­cvs ­ An Emacs Interface To CVS  Cervisia – With KDE Desktop    WinCVS ­ http://www.wincvs.org/    MacCVS ­ http://www.wincvs.org/downloads.html    TortoiseCVS ­ http://www.tortoisecvs.org/    Eclipse ­ http://eclipse.org● Commerical

SmartCVS ­ http://smartcvs.com

GUI CVS Client

Concurrent Versioning System Indian Linux Users Group­Chennai

CVS and Open Source

•  CVS and SSH clients are used by most                                         developers on SourceForge.net and freshmeat. 

• Most of the projects in opensource are maintained by CVS.

Concurrent Versioning System Indian Linux Users Group­Chennai

CVS Resources

● CVS Home ­ http://ximbiot.com/cvs/cvshome/● Web Site Projects with CVS ­ 

http://www.durak.org/cvswebsites/howto­cvs/● Open Source Development with CVS ­ http://cvsbook.red­

bean.com/

Concurrent Versioning System Indian Linux Users Group­Chennai

Advantages over CVS

• Atomic commits. Interrupted commit operations do not cause repository inconsistency or corruption.• Renamed/copied/removed files retain full revision history.• Native support for binary files, with space­efficient binary­diff storage.• Directories are versioned. Entire directory trees can be moved around and/or copied very quickly, and retain full revision history.• Constant time branching and tagging.• Optimized repository accesses. This reduces unnecessary network traffic to the repository host.

SubVersion