170 likes | 298 Views
CVS and Subversion (svn). Source Code Revision Control Software. 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)
E N D
CVS and Subversion (svn) Source Code Revision Control Software
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