= Development SVN = The SVN repository used for the development can be found at (browsable):[[BR]] http://tools.assembla.com/svn/fckeditor To browse the SVN source the [http://tools.assembla.com/fckeditor/browser Browse Source] button in the Trac site toolbar offers a much better interface. == Repository Structure == {{{ FCKeditor -----------+ Every subproject will have a directory in the root. trunk -----------+ This is the development place. branches developers --+ features | Isolated development spaces. versions ----+ tags 2.3.2 -------+ 2.3.1 | A tag will be available for each version release. 2.3 | It contains the development version (trunk) at release time. 1.6.1 -------+ }}} All subprojects in the repository will present a structure similar to the above. === The "trunk" === The trunk is the effective place were will be working everyday. Usually we'll have local working copies of the trunk only (and possibly any branch). Starting from version 2.4, the trunk will always have stable code which we can publish to the public SVN, and eventually release officially. So, only important bugs and small changes will be committed here, while more delicate and extensive developments will be done in a "branch". === Branches === Branches give us isolated environments for development, and once tested and confirmed a new work is ready, it can be simply merged in the trunk. The branches could be created in the following spaces: * '''branches/developers''': each developer may have a private branch under this directory. The directory name is the developer name (fredck, for example). The developer himself can decide to use it or not, and have complete freedom for it. * '''branches/features''': if a feature is too big and complex, a developer could decide to create a dedicated branch for it. * '''branches/versions''': there could be branches for future versions, waiting while previous ones are being tested and released. ==== Merging Branches ==== A common task during a branch development, is to '''merge changes made in the trunk to the branch''', leaving it always up to date with the trunk. Remember that merges must be done from the last revision merged, starting from the revision from which the branch has been created. When '''merging branches to the trunk''', first merge the trunk to the branch and check that everything is ok. Make the necessary changes and commit the branch. Then switch to the trunk and merge the differences between the branch HEAD and the last trunk revision you have just merged to the branch (usually HEAD). Then, if the branch is not anymore needed, just delete it (SVN delete I mean). If you are insecure, don't be afraid of asking others to execute this task for you. TortoiseSVN offers a nice tool to track the creation an life-cicle of branches. It is called "Revision graph". The SVN log can also be used for it. === Tags === [TODO] == Links == '''TortoiseSVN''': the SVN integration with the Windows Shell. This is the best way to work with SVN in Windows:[[BR]] http://tortoisesvn.tigris.org/ '''Subversion''': the official SVN command line. Windows binaries can be found in the download page:[[BR]] http://subversion.tigris.org/ Book - '''Version Control with Subversion''': a good (and free) book about SVN. We have bought a copy of it to support these guys:[[BR]] http://svnbook.red-bean.com/ ----