= Fusion Developers Corner = [[PageOutline]] This is the spot for a lot of developer-related information. == Committers == Committers are people with valid [http://www.osgeo.org/osgeo_userid OSGeo User IDs] that have permission to commit changes to the SVN repository. Any existing committer can visit [https://www.osgeo.org/cgi-bin/auth/ldap_group.py?group=fusion this page] to add or remove committers. You will need the [http://www.osgeo.org/cgi-bin/ldap_web_search.py OSGeo User ID] to add users. The reference for this is [http://wiki.osgeo.org/wiki/Subversion#Add.2FRemove_Committer here]. A list of Fusion Committers is available [wiki:Committers here]. == Patches == Patches are text files that contain the difference between a locally checked out version of fusion and the version in the SVN repository. See CreatingPatches for instructions on how to create a patch and ApplyingPatches for applying a patch to your local working version. == SVN How To == SVN is organized into several main folders: '''trunk''': This is the main development area for Fusion and is always the most up-to-date version. It will typically be somewhat unstable and should not be used for deploying applications. '''branches''': Releases of Fusion are organized into branches. When a new major or minor release is made, it is copied from trunk to the branches folder and named {{{fusion-.}}}. Any bug fixes related to that version are applied to the branch and new bugfix releases can be created from the branch from time to time. A branch is considered stable and usable for deploying applications. '''tags''': All major, minor and bugfix releases of Fusion are tagged by copying the appropriate branch revision to the tags folder and named {{{fusion-..}}}. Binary releases are created by checking out a tag sub folder and running the build process against that folder. You should not commit any changes to a tag. '''sandbox''': Everyone who is a Fusion developer should have a sandbox folder to use for testing out new ideas and implementing specific functionality. Sandbox directories can be used for anything you like. === Using SVN === To check out a copy of '''trunk''', a branch, a tagged version, or a sandbox, you need to know the ''URL'' and use {{{svn checkout }}}. For instance: * {{{svn co http://svn.osgeo.org/fusion/trunk}}} - check out trunk * {{{svn co http://svn.osgeo.org/fusion/branches/fusion-1.0}}} - check out the branch for version 1.0 * {{{svn co http://svn.osgeo.org/fusion/tags/fusion-1.0.0}}} - check out the 1.0.0 released version * {{{svn co http://svn.osgeo.org/fusion/sandbox/pagameba}}} - check out pagameba's sandbox Once you have a checked out copy, this is called a working copy. To update a working copy to the latest version, you use the ''update'' command with no arguments: * {{{svn update}}} To move the working copy to a specific revision number, you can add the ''revision'' parameter: * {{{svn update -r }}} To see if you have changes in your working copy against the current revision: * {{{svn status}}} To see the differences between your working copy and the current revision: * {{{svn diff}}} * {{{svn diff > diff.patch}}} redirects the output to a file that is suitable for using with the {{{patch}}} command == The Build Process == === Creating a binary build ===