Source Code Revision Control Software

Download Report

Transcript Source Code Revision Control Software

Source Code Revision Control
Software
CVS and Subversion (svn)
Would these tools be useful for Noah development efforts?
Why use revision control software?

Concurrent development for multiple users
working from a single source-code base

History (logging; revert to older versions)

Tagging (version identification)

Branching (merging)

Archive (just archive the repository)
Caveats

Revision control software is not a replacement
for:

Developer communication, cooperation

Code development project management

Good habits on the part of code developers

Meaningful log entries (change logs)

Code development habits
Typical use

Checkout code from the central repository

Do your work


make your modifications

possibly add source-code files

do your testing

etc.
Commit your changes to the central repository

Include a mandatory log entry describing your
changes
More typical use

Update your working code to include changes
that others have comitted

Merge conflicting changes

Export code for release

Tag a specific snapshot of the code (i.e., a
named version for release)
More typical use



View file history, change logs
Make branches for more independent
development
Merge branches back into main code base
CVS or Subversion?

At the level for basic usage, they are very
similar

The goal of the Subversion project was to make a
near-lookalike replacement for CVS users
Similarities

Similar workflow, similar user commands

(Though I found branching and tags seemed to
make a lot more sense in Subversion)

Each has readable, useful users’ guides online

Each has a wide user base

Used by many high-profile projects

Actively maintained

Open source
Reasons to choose Subversion for
Noah development?

SVN has a newer code base than CVS


Advantage? Disadvantage?
SVN seems to have more active development

Advantage? Disadvantage?

SVN has better file renaming capabilities

SVN handles symbolic links


SVN used at NCAR for WRF development, at NCEP for NMM
development
SVN seems to have more sensible tags and branches
Reasons to choose CVS for Noah
development?

Long history

RAL has a central CVS repository

There has been talk of having a central RAL
Subversion repository

Would Noah development take advantage of RAL
central repository?
CVS or Subversion?

More important question:

Would software version control through some
central repository be useful for Noah LSM
development
Discussion points



Would such tools be useful for Noah development efforts?
Are the Noah development efforts coordinated enough to make
use of a centralized, single, repository?

Multiple institutions (firewall issues?)

Divergent interests and development directions
Would Noah development be better suited by each group
maintaining independent code?

Periodic merging efforts to produce a new “unified” release

Then every group starts again with their own development from that
common release

Each group responsible for its own code maintenance strategies
Online Documentation

Subversion


http://svnbook.red-bean.com
CVS

http://cvsbook.red-bean.com

http://ximbiot.com/cvs/manual
Differences (at the user level)




Revision numbers

CVS version numbers apply to files

Subversion version numbers apply to the repository
Directory versioning

CVS does not apply revision numbers to directories

Subversion revision numbers apply to the repository, and so to any directories in
the repository
Branches and tags

Subversion branches and tags are simply copies of the repository filesystem

CVS branches and tags get complicated
Properties

Subversion allows arbitrary metadata tags to be applied to files
Release 1.0
Release 2.0
Release 1.0
Release 2.0
Concerted merge effort