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:
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.