GeneNetwork Codebase Migration Plan

Update: The subversion repository is actually on tyche, http://tyche.utmem.edu/repos/gn. Structurally it's the same, though.

Repository Layout

The GeneNetwork repository lives in /home/gndeveloper on WebqtlMachine. Note: you must use Subversion to edit a repository; it is not possible to edit it manually. This repository is group-writable by members of the GndeveloperGroup. The URL for checkout is svn://localhost/home/gndeveloper/gn if you are checking out locally and svn+ssh://username@webqtl/home/gndeveloper/gn if you are checking out remotely. See SubversionSetup for more information on Subversion.

There are two folders in the repository, trunk and release. Trunk contains the latest version of the codebase. Release will contain named subdirectories for releases. For more information on how to make releases, consult Chapter 4 of the SubVersion book. An important point is that svn copy is not the same as cp. It creates virtual copies and only stores two versions of a file if there are changes. So four copies of our repository will most certainly not take 4 GB of space. The below direcotries should hold all data and codes that are need to make GN website run. In other words, if we copy them to other location, it will work by themselves.

directory description
data data files used by GN for data not in the MySQL database
scripts Python and shell scripts used to update the database
thirdparty Python modules GN depends on that are not in the Python distribution
tests Unit tests with pyunit for the code
web the live python code that drives GN.org

Shared files

HeadmasterMachine contains a share, /node_apps/gnshare, that is shared across the entire cluster. GnShare contains the following top-level folders:

folder description
gnbeta a checked out copy of the Subversion trunk

The webserver on WebqtlMachine is configured to serve from the gnbeta folder. In this machine there is a symbolic link /gnshare to /node_apps/gnshare. So in WebqtlMachine, this folder was checked out as follows:

cd /gnshare/gnbeta
svn co svn://localhost/home/gndeveloper/trunk gnbeta

When you would like to apply repository changes to the codebase, update it as follows:

cd /gnshare/gnbeta
svn update

Code development and Migration plan

Zhaohui is working on a detailed code migration (development, test, release) plan. Here is the proposed GNCodebasePlan.

The general strategy could be: trunk/ holds all codes for the gn project; each release is copied to branches/ for testing; and after it passes all tests, the branch is copied to tags/. The release branches are only changed for the bugs discovered during testing. Usually there is no need to have a feature branch. This strategy is based on the simplicity of our project. Usually different programmers in our team will work on different codes.

Topic revision: r14 - 31 Dec 2008 - 19:38:39 - KevAdler
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback