An Introduction to CVS - PowerPoint PPT Presentation

About This Presentation
Title:

An Introduction to CVS

Description:

An Introduction to CVS ... By Durai Raj A brief History of CVS CVS started out as a bunch of shell scripts written by Dick Grune, posted to the newsgroup `comp ... – PowerPoint PPT presentation

Number of Views:524
Avg rating:3.0/5.0
Slides: 64
Provided by: Dura90
Learn more at: https://www.oocities.org
Category:

less

Transcript and Presenter's Notes

Title: An Introduction to CVS


1
An Introduction to CVS
By Durai Raj
2
Why CVS ?
Has one of your projects ever experienced this ?
Which is the latest version ?. God only knows
(sometimes myself too!!)
3
A brief History of CVS
  • CVS started out as a bunch of shell scripts
    written by Dick Grune, posted to the newsgroup
    comp.sources.unix' in December, 1986.
  • In April, 1989, Brian Berliner designed and coded
    CVS. Jeff Polk later helped Brian with the
    design of the CVS module and vendor branch
    support.
  • Since then CVS has been used to develop software
    by many programmers across the internet

4
Requirements for VC
  • Multiple Developers - concurrent Access
  • History
  • View diffs
  • Rollback changes
  • Release Management

5
So what is CVS ?
Its like having your source files on a File
server and coordinate with your colleagues on the
version number youre working on.
6
How Does CVS Work?
  • CVS uses a Client / Server Architecture
  • A Sys Admin Would Normally Install the Server
  • The Server Maintains the Repository
  • Developers Use the Client
  • The Client Allows for Checking in/out, and
    Updating, etc..

7
Client-server architecture
  • separate server (UNIX or NT)
  • no shared file systems
  • a server process per connection

Ganapathy
Central Repository (sdgserver in our organization)
Nagaraj
Durai mansoor
8
How Does CVS Version?
  • CVS maintains a set of diffs that define the
    changes between each version
  • Any version can be checked out from the
    repository by specifying the date
  • cvs checkout -D yesterday ltprojgt or
  • cvs checkout -D 12 days ago. ltprojgt or
  • cvs checkout -D 23 August 2002 ltprojgt

9
Idea of CVS
  • The idea of the CVS is to create a file system,
    where each file has remembers all the
    modifications made to it. In other words it is
    all the versions of it at the same time.
  • File system resides in a repository, that can be
    stored to local or remote host.
  • All the files are edited outside of the
    repository in some working directory and in some
    phase synchronized with the repository.
  • Files are moved to, from and updated from
    repository with special tool called cvs, which is
    available for most platforms

10
Platform Support
  • CVS ??for Linux
  • CVS ??for Windows
  • CVS ??for MAC
  • CVS ??Port it to your desired platform?????

11
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

12
Concurrent Versions System
  • Overview of CVS architecture.
  • Repository structure.
  • Basic development tasks in WinCvs.
  • Branching and merging.
  • Other CVS interfaces
  • CVS internals

13
Versioning Systems
  • Versioning Systems allow
  • multiple users to modify the same code
  • To store one master copy of the source code
  • To automate the update between versions
  • Access to any previous state of the source code

14
Handling Binary Files
  • Line Feed Format Repository vs. Client
  • Keyword Substitution
  • Wrappers
  • cvs admin -kb

15
Web Access
  • Look at CVS tree in the repository
  • Browsing of a CVS repository
  • ViewCVS
  • http//viewcvs.sourceforge.net/
  • CVSweb
  • http//people.freebsd.org/fenner/cvsweb/

16
CVS dos and don'ts
  • Facilitates bug detection when software is
    modified
  • Economy in disk space while saving versions
  • Prevents code over-writing in a team project
  • Not a build system
  • Not a substitute for communication between
    developers or for management
  • It will not create any magic for you.

17
Limitations
  • Best if you have an investment in nix
    environments
  • Designed for programmers
  • Concepts are hard to grasp
  • Alien concept to designers

18
Where it can be used ?
  • Software Development
  • Website Management
  • Documentations
  • Synchronization of distributed effort
  • ... anywhere digital data evolves

19
What Is CVS Used For?
  • Open Source Projects
  • Projects With a Large Number of Developers
  • Storing Files That Benefit From Version Control
    ( /etc/ config files, or web pages )
  • Taking Advantage of a Sandboxed Development
    Environment

20
So What is it good for ?
  • Version control and connecting multiple developer
    together in one project, of course )
  • Document management and archiving
  • Nice way to do one project with multiple machines
    and still manage the versions
  • Allows free experimenting on project
  • Following the growth of the project
  • Backupping - it forces one to take backups with
    neglible work very often

21
Benefits of CVS
  • Automatic, constant and forced backupping
  • When programming, frees the development
  • Gives freedom to choose afterwards, when the
    program is ready
  • Saves all the versions for later use
  • Clean way of saving only the necessary files and
    managing projects
  • Gives freedom to develop on multiple machines
    simultaneously

22
Fancy Features
  • Multiple developer support (file locking, etc.)
  • Bonsai - www-interface (for example see Gnome
    project)
  • Keyword substitutions
  • Development of several version at the same time
  • Multiplatform-support (works even on obscure
    platforms like Windows)

23
Concurrent checkout
Master Repository foo.c
Checkout does not lock the files in repository
checkout latest
checkout branch rel_1_fix
checkout V1.1
checkout V1.2
checkout latest
Sundar (Code walkthrough)
Ganesh
Mansoor
Subbu
Gopinath
checkin
checkin
checkin
X
X
V1.8 or 1.9
V1.2.2.2
checkin prohibited
V1.8 or 1.9
24
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.

25
Ideal development with CVS
Developer A
checkout
update
checkin
development
repository
Developer B
26
Real development with CVS
Developer A
repository
Developer B
27
How Do You Setup CVS?
  • Most current nix distribution come with CVS
    installed from the get go
  • Setting up the server basically just requires
    specifying where the repository will be housed
  • In Linux Install gcvs for gui interface
  • In Win Install Wincvs
  • Tortoise CVS is also good

28
Setting Up the Client
  • CVS relies on two main environment variables
  • CVS_ROOT specifies where the repository is
    located. This can be a network address, i.e..
    //sdgserver/sdgrepo

29
Essential CVS Terminology - Repository
  • CVS stores all files in a centralized directory
    called the repository. The directory is defined
    by the environment variable CVSROOT.

30
Essential CVS Terminology - Module
  • Modules are just the top level directories in the
    Repository.
  • You can combine multiple modules in your own
    directory structure. See documentation for
    CVSROOT/modules
  • incorporate generic libraries in your own source
    tree, but be able to maintain them individually.
  • The files in the repository are organized in
    modules. Each module is made up of one or more
    files, and can include files from several
    directories. A typical usage is to define one
    module per project.

31
Version Numbers
  • Every file in a CVS repository can contain many
    versions, which are given version numbers in form
    x.y.x.y....
  • The history of each file is tracked with an
    incrementing revision number
  • For each revision there is a log entry
  • Revision numbers have the format 1.25 if they're
    on the main trunk, branches have something like
    1.33.2.16

32
Revision numbers
33
Version Numbers
  • Version numbering is automatic i.e. number y is
    automatically increased every time file is
    changed

1.1
1.2
1.3
1.4
1.5
34
Tags
  • A Tag is simply a symbolic name for a specific
    revision
  • Tagging all files in one directory or module
    marks the current stage.
  • Can be used as synonym for a revision in any
    CVS-command
  • cvs tag lttagnamegt applies the tag to the current
    revision of each file
  • Version numbers can be treated as a internal
    information in CVS and only symbolic names - tags
    for version used to mark releases.

35
Branches
  • Version number can contain more than two numbers
    to mark branches.
  • Branch can start from any version and start
    developing independently from the rest of the
    software.
  • In some point of the development of a branch, it
    can be merged to main trunk in necessary.

36
Interaction with the repository
  • Check out
  • Syntax cvs checkout options module ...
  • Add
  • Syntax cvs add options file ...
  • Remove
  • Syntax cvs remove options file ...
  • Examine status
  • Syntax cvs status options file ...

37
Interaction with the repository cont.
  • Update
  • Syntax cvs update options file ...
  • Check in (commit)
  • Syntax cvs commit options file ...
  • Release module
  • Syntax cvs release options module ...
  • Import module
  • Syntax cvs import options repository_dir
    vendor_tag release_tag
  • Export module
  • Syntax cvs export options module ...

38
Branches
  • Tag symbolic name for revision of file
  • -v flag in status see tags and rev. nos.
  • Tag all files at strategic points release
  • -r flag in checkout checkout a rev. no.
  • Need for branches good for bug-fixing
  • Put modified code in branch and later merge with
    main trunk

39
Modules
  • modules are alias names to projects kept in the
    repository.
  • More convenient to call a module name rather
    than a long pathname
  • Example
  • If repository is in
  • \\Sdgserver\SDGREPO\FCS DRIVERS V1
  • A module could declare this simply as DRIVERS

40
Defining the module
  • Get working copy of modules file
  • Edit file to define new module
  • Commit changes to modules file
  • Release the working copy
  • E.g. - cvs checkout CVSROOT/modules
  • new line newdir newcode/newdir
  • cvs commit m Added module modules
  • cvs release d modules

41
cvs Status
  • Status gives the state of the file
  • Up-to-date latest revision
  • Locally modified not committed changes
  • Locally added added but not committed
  • Locally removed removed, not committed
  • Needs checkout, Needs merge
  • Unresolved Conflict update conflict
  • Unknown

42
What is WinCVS?
  • WinCVS is a MS Windows GUI CVS client.
  • WinCVS is an Open Source product, written in MS
    Visual C. Architecture supports different front
    ends.
  • Latest version is 1.2.x is stable release
  • Latest beta version is 1.3b8

43
WinCVS on your desktop
  • Configuration
  • Main screen
  • Checking out the sources
  • Viewing source history
  • Diff
  • Commit
  • Update
  • Tag

44
Guided Tour / Demo
  • Importing an existing project to the repository
  • Checking out a project to your work area
  • Updating your work area
  • Editing files, checking in/committing new
    versions to the repository
  • Comparing changes between versions (diffing)
  • Advanced features
  • Customising CVS

45
Guided Tour / Demo
  • Importing an existing project to the repository
  • Checking out a project to your work area
  • Updating your work area
  • Editing files, checking in/committing new
    versions to the repository
  • Comparing changes between versions (diffing)
  • Advanced features
  • Customising CVS

46
Guided Tour / Demo
  • Importing an existing project to the repository
  • Checking out a project to your work area
  • Updating your work area
  • Editing files, checking in/committing new
    versions to the repository
  • Comparing changes between versions (diffing)
  • Advanced features
  • Customising CVS

47
Guided Tour / Demo
  • Importing an existing project to the repository
  • Checking out a project to your work area
  • Updating your work area
  • Editing files, checking in/committing new
    versions to the repository
  • Comparing changes between versions (diffing)
  • Advanced features
  • Customising CVS

48
Guided Tour / Demo
  • Importing an existing project to the repository
  • Checking out a project to your work area
  • Updating your work area
  • Editing files, checking in/committing new
    versions to the repository
  • Comparing changes between versions (diffing)
  • Advanced features
  • Customising CVS

49
Guided Tour / Demo
  • Importing an existing project to the repository
  • Checking out a project to your work area
  • Updating your work area
  • Editing files, checking in/committing new
    versions to the repository
  • Comparing changes between versions (diffing)
  • Advanced features
  • Customising CVS

50
Guided Tour / Demo
  • Importing an existing project to the repository
  • Checking out a project to your work area
  • Updating your work area
  • Editing files, checking in/committing new
    versions to the repository
  • Comparing changes between versions (diffing)
  • Advanced features
  • Customising CVS

51
WinCVS Configuration
Your login
52
WinCvs Main screen
53
Checking out the sources
54
Source history diff
55
Commit, Update Tag
56
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.

57
Working on branches
58
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

59
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.

60
Advisory locks
Developer A

Developer B
Editors Developer A
Editors Developer A Developer B
61
Links
  • Official CVS site http//www.cyclic.com
  • CVS Bubbles http//www.loria.fr/molli/cvs-index.
    html
  • CVS for Web development http//durak.org81/cvswe
    bsites
  • WinCvs http//www.wincvs.org
  • jCVS http//www.jcvs.org/
  • Netscapes Mozilla under CVS
  • http//cvs-mirror.mozilla.org/webtools/tindertest
    /showbuilds.cgi?treeSeaMonkey
  • FreeBSD CVS repository http//www.freebsd.org/sup
    port.htmlcvs

62
QA
  • QA
  • Your Time

63
About
  • For suggestions durairaj_77_at_hotmail.com
  • Thanks to Open Source Community
  • Thanks to all my team members for their comments
    and suggestions.
  • A special thanks to Vijay Ananth K for his
    motivation.
Write a Comment
User Comments (0)
About PowerShow.com