c oncurrent v ersions s ystem

19
ren 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

Upload: nuri

Post on 09-Jan-2016

32 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: C oncurrent  V ersions  S ystem

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

Page 2: C oncurrent  V ersions  S ystem

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

Page 3: C oncurrent  V ersions  S ystem

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

Page 4: C oncurrent  V ersions  S ystem

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

Page 5: C oncurrent  V ersions  S ystem

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

Page 6: C oncurrent  V ersions  S ystem

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.

Page 7: C oncurrent  V ersions  S ystem

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.

Page 8: C oncurrent  V ersions  S ystem

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.

Page 9: C oncurrent  V ersions  S ystem

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

Page 10: C oncurrent  V ersions  S ystem

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

Page 11: C oncurrent  V ersions  S ystem

Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999

checkoutupdatecheckindevelopment

Ideal development with CVS

repository

Developer A

Developer B

Page 12: C oncurrent  V ersions  S ystem

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

Page 13: C oncurrent  V ersions  S ystem

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

Page 14: C oncurrent  V ersions  S ystem

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

Page 15: C oncurrent  V ersions  S ystem

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

Page 16: C oncurrent  V ersions  S ystem

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

Page 17: C oncurrent  V ersions  S ystem

Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999

CVSweb

Directory listingDiff between 2 versions of the fileOther CVS clients

Page 18: C oncurrent  V ersions  S ystem

Warren Jones, Fluke Co., Eugene Kramer, Remedy Co. Introduction to CVS 1999

Other CVS clients

jCVS

Directory listingDiff between 2 versions of the file

Page 19: C oncurrent  V ersions  S ystem

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