c oncurrent v ersions s ystem
DESCRIPTION
C oncurrent V ersions S ystem. Overview of CVS architecture. Repository structure. Basic development tasks in WinCvs. Branching and merging. Other CVS interfaces. CVS Features. Concurrent access by multiple developers Multiple development lines in a single repository - PowerPoint PPT PresentationTRANSCRIPT
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
Concurrent Versions System
• Overview of CVS architecture.
• Repository structure.
• Basic development tasks in WinCvs.
• Branching and merging.
• Other CVS interfaces
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
CVS Features
• Concurrent access by multiple developers
• Multiple development lines in a single repository
• Grouping sources into modules
• Symbolic source tagging
• Diffs between versions
• Configurable logging support
• Binary files support
• Repository event triggers
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
The CVS Repository
ewacvs:/data1/cvsroot
CVSROOT shr project1 project2 project3 devkits
ar cgi doc install reports util web
cgipr
• Resides on a server• No working files inside the repository
esapps formsunix nt
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
CVS Usage ModelCheckout, Commit, Update
• CheckoutMakes private copy in working directoryCan check out anywhere
Check out multiple copies, multiple versions
• UpdateBrings working copy up to date with
repository
• CommitCommit changes to the repository when
finished Working copies must be up to date with repository
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
Concurrent checkout
Master Repositoryfoo.c
WorkingCopyV1.7
WorkingCopy V1.1
WorkingCopy V1.2
WorkingCopyV1.7
WorkingCopy
V1.2.2.1
checkout branch rel_1_fix checkout latest
checkout latest
checkoutV1.2
checkoutV1.1Karen
Michael BrigidPatrick
Checkout does not lock the files in repository
X XV1.8 or 1.9
V1.8 or 1.9V1.2.2.2
checkin
checkincheckin
checkin prohibited
Chris
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
CVS and the Development Cycle
1. Check out source files in working directory.
2. Edit source files.
3. Unit test your code.
4. Update working files to merge in changes from other developers (if necessary).
5. Test again if the sources were merged on step 4.
6. Commit changes.
7. Repeat from step 2 until you have a new release.
8. Tag the release.
9. Submit the module name and release tag for integration build.
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
Common CVS commands
cvs [cvs-options] command [cmd-options] [files]
cvs checkout Check out source for editing.
cvs add Add new file/directory to repository.
cvs remove Remove an entry from the repository.
cvs status Show status of checked out files.
cvs log Show revision history for files.
cvs diff Compare working files to version in repository or versions inside the repository.
cvs update Bring working files into sync with repository.
cvs commit check files into the repository
cvs tag Label the sources.
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
When to commit
• Commit to mark a working state that you might want to return to later.
• Commit related files in a single operation. Use a common log message for all the files.
• Commit to backup your sources.
• Commit from an office desktop to be able to access the files from home much faster than through filesystem sharing.
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
Working on branches
1.1 1.2 1.3
release_1
cvs tag release_1
cvs up -r rel_1_fix
1.4
release_2
cvs tag release_2
1.2.2.1 1.2.2.2
patch
rel_
1_fixcvs tag -b rel_1_fix
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
Branch if you need ...
• to create sustaining (patch) releases
• to have multiple development lines from a single repository
• to do experimental development to merge later or forget about it
• to keep temporary state of development without affecting builds
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
checkoutupdatecheckindevelopment
Ideal development with CVS
repository
Developer A
Developer B
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
checkin
X
Real development with CVS
repository
Developer A
Developer B
updateconflict resolutioncheckin
conflict
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
Reserved Checkouts and CVS
• advisory locks: implemented via cvs edit and cvs watch. Get notification when someone edits or checks in the file.
• all-o-nothing advisory locks: cvs edit does not succeed if files are already edited by someone else. Implemented using a patch to cvs edit
• exclusive locks (RCS style): implemented via cvs admin. You cannot commit unless you’ve locked the file. One lock per file per branch.
Exclusive file locking prevents parallel development and is not recommended for plain
text files
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
Advisory locks
Developer A
Developer B
CVS server
edit/watch
Editors:
Developer A
Editors:
Developer A
Developer B
edit
email alert
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
Client-server architecture
ewacvs
• separate server (UNIX or NT)
• no shared filesystems
• a server process per connection
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
WinCVS on your desktop
• Configuration• Main screen• Checking out the sources• Viewing source history• Diff• Commit• Update• Tag
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
CVSweb
Directory listingDiff between 2 versions of the fileOther CVS clients
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
Other CVS clients
jCVS
Directory listingDiff between 2 versions of the file
Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999
CVS online
• Official CVS site: http://www.cyclic.com
• CVS Bubbles: http://www.loria.fr/~molli/cvs-index.html
• CVS for Web development: http://durak.org:81/cvswebsites
• WinCvs: http://www.wincvs.org
• jCVS: http://www.jcvs.org/
• Netscape’s Mozilla under CVS: http://cvs-mirror.mozilla.org/webtools/tindertest/showbuilds.cgi?tree=SeaMonkey
• FreeBSD CVS repository: http://www.freebsd.org/support.html#cvs