Knowledge Base‎ > ‎edCode.org‎ > ‎Development Process‎ > ‎

Checking Out Code


 

NOTE: The information below is deprecated since the move to github. It will be updated soon.


Getting the Code:

The code for all edCode.org projects is maintained via a Subversion repository on code.google.com. You can use your web browser to browse the code (read-only).

To download and work on the code, you'll need a subversion client ("svn") to checkout and commit changes. Here is a link to the subversion download page.

To checkout the latest code (for all projects) as a contributor, run:

svn checkout https://edcodeorg.googlecode.com/svn/ edcode-dev --username <username>
where edcode-dev is an empty directory, and <username> is your email address associated with edCode.org.

You can also check it out without a username, as read-only with this command:

     svn checkout http://edcodeorg.googlecode.com/svn/ edcode-dev-readonly


Code Structure:

The subversion source tree for edCode.org is setup with each project at the top-level.  For example:

edcodeorg 
   |
   +-------------- flubaroo
   |                   |
   |                   +--- trunk
   |                   |
   |                   +--- branches
   |                   |
   |                   +--- tags
   |
   +-------------- autoCrat
   |                   |
   |                   +--- trunk
   |                   |
   |                   +--- branches
   |                   |
   |                   +---tags
   |
   + ...

If you plan to only be working on one project, you should checkout the root for that project. For example, if you're just working on Flubaroo, you can run:

  svn checkout https://edcodeorg.googlecode.com/svn/flubaroo flubaroo-dev --username <username>


This will prevent you from accidentally submitting changes to other projects.


Each project has 3 directories:
  • trunk: The trunk directory is where the latest version of the code being worked on resides. This code is likely newer than even the most recent version people are using, as it's actively being developed. So if you're planning to contribute to the next version, this is where you should submit your changes to, and sync updates from. If you've just started your project, this will be the only directory with files in it.

  • branches: A "branch" is a copy of the code that captures how the code looked at a particular point in time. In edCode.org, we make a new branch any time a new version of a project is publicly published. This branch includes all files in the project, and will live in its own directory in the project's branches directory. For example, consider different published versions of Flubaroo:  

    +-------------- flubaroo
       |                   |
       |                   +--- trunk (latest version being worked on)
       |                   |      |
       |                   |      + --- flubaroo.gas
       |                   |      |
       |                   |      + --- <other files>
       |                   |   
       |                   +--- branches
       |                           |
       |                           +--- version2.1
       |                           |       |
       |                           |       +--- flubaroo.gas
       |                           |       |
       |                           |       + --- <other files>
       |                           |
       |                           |
       |                           +--- version2.2
       |                           |       |
       |                           |       +--- flubaroo.gas
       |                           |       |
       |                           |       + --- <other files>
       |                           |

    Branches are used when we need a reference copy of the code, such as with versions. For example, say a bug is found in the latest published version of Flubaroo (e.g. version2.1). But a fix cannot easily be made because major changes have been made to the copy in the trunk, to support an upcoming feature. The solution is to apply the fix to the latest version in the branches directory (version 2.1). The branch will itself be copied into a new branch directory (version2.2), where the fix will be applied, and from which a new version will be compiled, tested, and published.

  • tags: A "tag" is like a branch, but it's more of a label to mark interesting points in the development of the code, such as identifying a specific QA version, or to make a copy of the trunk before a major redesign is going to be made. Use of tags is not mandatory.