CASA Subversion Reorganization and Cleanup

Status: ALMOST COMPLETE

Remaining:

  • Move the hierarchy of project directories in "casa/branches/project/" to one directory per project branch.
  • Step 3 - Split up branches/personal
  • Step 4 - Move directories that do not contain branches out of "casa/branches/"
  • Step 5 - Find better homes for ...
  • Step 6 - Delete Known Dead Code
    • cleanout scratch

Goals

Reorganize the CASA Subversion repository to help developers work more quickly by:

  • allowing use of 3rd party tools designed to make Subversion easier and quicker to use,
  • moving less frequently used code out of the way of routine development, and
  • cleaning out code we no longer need.

We will minimize disruptions to CASA developers by:

  • using "svn move" to preserve change histories,
  • breaking the reorganization and cleanup into chunks,
  • getting the most disruptive changes over with early, long before we freeze for the next release, and
  • completing the rest of the cleanup in the background.

Step 1 - Stop the spread of code we can not share

Complete - 2012-07-14

This was the purpose of the Subversion maintenance on 2012-07-14.

Step 2 - Convert to conventions supported by Subversion 3rd party tools

Create "casa/tags" directory

Complete - 2012-11-14

By Subversion convention, all named code baselines are kept in a "tags" directory at the same level as the trunk directory. This change will allow Subversion 3rd party tools to find all tags and compare code identified by tags with code on the trunk and on branches.

CASA has not been using Subversion tags. Using tags will allow us to identify rolling baselines like last stable version, last test version, etc. The will also allow us to eliminate long-running branches that are never updated.

Rename "casa/active/" to "casa/trunk/"

Complete - 2012-12-26

By Subversion convention, the main line of development is named "trunk". This change will allow Subversion 3rd party tools to find the CASA main line of development.

Before moving on, ensure:

  • Jenkins trunk builds run,
  • daily Subversion change reports run,
  • daily regression tests run,
  • AOC automated trunk builds run,
  • https://svn.cv.nrao.edu/casa/log/changelogs/CASA_changelogs.html reports changes to casa/trunk/, and
  • any other automation that depends on the location of the main line of development in Subversion is corrected.

Move existing branches to Subversion conventions

By Subversion convention, all branches from the trunk are kept in a "branches" directory at the same level as the trunk directory. This change will allow Subversion 3rd party tools to find all branches and compare changes on the trunk with changes on branches.

Move "casa/test/" to "casa/branches/test/"

Completed - 2012-01-07

This change will allow Subversion 3rd party tools to find the test branch. casa/branches/test/ will be used as casa/test/ is used now, as a single, long-running branch that separates untested main line of development code from code we are testing and stabilizing to publish to users.

Before moving on, ensure:

Move the hierarchy of stable directories in "casa/branches/stable/" to one directory per stable branch.

Completed - 2012-01-30

This change will allow Subversion 3rd party tools to find all of the stable branches.

For example, change from

casa/
    branches/
        stable/
            2011/
                08/
                09/
                12/
            2012/
                01/
                02/
                03/

to

casa/
    branches/
        stable-2011-08/
        stable-2011-00/
        stable-2011-12/
        stable-2012-01/
        stable-2012-02/
        stable-2012-03/

Before moving on, ensure:

Move the hierarchy of release directories in "casa/branches/release/" to one directory per release branch.

Completed - 2012-01-30

This change will allow Subversion 3rd party tools to find all of the release branches.

For example, change from

casa/
    branches/
        eso/
            1.0.0/
        release/
            3.0.0/
            3.0.1/
            3.1.0/
            3.2.0/
            3.2.1/
            3.3.0/
            3.4.0/
            3.4.1/

to

casa/
    branches/
        release-3_0_0/
        release-3_0_1/
        release-3_1_0/
        release-3_2_0/
        release-3_2_1/
        release-3_3_0/
        release-3_4_0/
        release-3_4_1/
        release-eso-1_0_0/

Before moving on, ensure:

Move the hierarchy of project directories in "casa/branches/project/" to one directory per project branch.

This change will allow Subversion 3rd party tools to find all of the project branches.

For example, change from

casa/
    branches/
        project/
            calibration_table_refactoring/
            flagger_refactoring/
            swig/
            swigtest/
            viewer/

to

casa/
    branches/
        project-calibration_table_refactoring/
        project-flagger_refactoring/
        project-swig/
        project-swigtest/
        project-viewer/

Step 3 - Split up branches/personal

For all directories in "casa/branches/personal/" that contain project branches only used by one person, treat as project branches as described above.

For example, change from

casa/
    branches/
        personal/
            sanjay/
                code/

to

casa/
    branches/
        project-improve-synthesis/code/

Note: "improve-synthesis" is a made up name, as I don't know what Sanjay is working on in "casa/branches/personal/sanjay".

Move all other directories in "casa/branches/personal/" to "casa/personal/". This is to separate other code from branches.

For example, change from

casa/
    branches/
        personal/
            srankin/
            ttsutsum/

to

casa/
    personal/
        scott.rankin/
        tak.tsutsum/        

Developers are free to use casa/personal/ for small projects, provided:

  • casa/personal/ directory correctly identifies the owner (using a Subversion user name),
  • this work supports CASA development.

Do NOT use casa/personal/ for:

  • non-CASA work,
  • CASA work that belongs in one of the areas described elsewhere.

Step 4 - Move directories that do not contain branches out of "casa/branches/"

  • Delete "casa/branches/interesting_code/".

Note: no code has committed to casa/branches/interesting_code/. This was created for Kumar. If anyone wants to preserve their own interesting code, please do so in casa/personal//

Step 5 - Find better homes for ...

  • casa/attic/ -> TBD
  • casa/development_tools/ -> casa/trunk/dev_tools/ ?
  • casa/scratch ->
    • move active directories to casa/personal/
    • delete dead directories
  • casa/stable/ -> casa/branches/stable-pre-2011-08/

Step 6 - Delete Known Dead Code

All deleted code will remain in the Subversion history. It may be retrieved in the future if necessary.

Due to process changes, the following are no longer used and will be deleted:

Completed - 2012-01-30

  • casa/prerelease/
  • casa/release/
  • casa/stable/
  • casa/stable4dev/
  • casa/views/

The following have not been touched in the last year.

  • casa/scratch/build_system/
  • casa/scratch/jonas/

-- ScottRankin - 2011-06-22

Complete re-write based on discussions with Darrell Schiebel during Charlottesville Trip 2012 07.

-- ScottRankin - 2012-07-23

Added dates for completed items, updated notes on casa/personal/ and casa/branches/interesting_code/.

-- ScottRankin - 2013-01-31

-- ScottRankin - 2013-04-05
Topic revision: r1 - 2013-04-05, ScottRankin
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding NRAO Public Wiki? Send feedback