Presentation on theme: "Source Code Revision Control Software CVS and Subversion (svn)"— Presentation transcript:
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
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