Managing the code of Project Joomla! - a peak inside
Posted: Tue May 23, 2006 3:49 pm
Lol not quite. Let me explain.deathwingpnx wrote: To our Hero Stingrey, Sir I saw your name above the joomla.php file, are you the one who created the joomla.php library? But
doesnt matter cause I salute you anyways.
Project Joomla! involves programmers throughout the globe (11 different counties - 4 regions) who make up the Core Development Team:
http://www.joomla.org/content/blogcategory/43/85/
It is essential that the Development Code base be managed in some way to allow these disparate group of programmers to work on the code.
Even with programmers located in the same office, there is the problem that people might attempt to work on the same files at the same time for different purposes, how does one manage this, especially where such a group is located in different countries?
How do other members of the team keep up with changes in the code that might occur?
What happens if a somethign changed needs to be reverted?
For this we use a Version Control system. Basically this is a central system that manages the code to:
- avoid version conflicts in development that can arise when multiple programmers work on teh same set of files on a project
- automatically journal changes to files on a project
In our case we use an Open Source Version Control system called Subversion:
http://subversion.tigris.org/
Subversion handles the above objectives via the central Joomla! Forge server.
When one of the Core Development team makes a change in the code base on their local machine, they then commit it to the central server via subversion.
The server then checks the central server a compares the file on the server and the one from the developers machine. Subversion then modifies the central server file with the changes made. If the file was changed by another member of the team, Subversion will intelligently merge the changes - if it cannot it will warn the developer making the commit that it cannot update the central file due to a conflict which the member will need to fix manually.
Every file in the Joomla! project contains some information at the top of each file like from joomla.php
Code: Select all
* @version $Id: joomla.php 3603 2006-05-23 05:22:33Z stingrey $
This means that since Project Joomla! started, the change to joomla.php by stingrey on 2006-05-23 05:22:33Z was the 3603th code commit to the project.
Every commit to the codebase increases this number. A commit can involve a change to 1 file or a change to every file.
So at the top of every file in Project Joomla! you can tell when and who made the last change to that particular file.