In order to coordinate our efforts in a clean and ordered manner, we opted to use one of the major version control systems to manage the repository that grants life to the project: Subversion (SVN) is a centralized VCS which provides, amongst other things, a mostly transparent way of managing files and directories in the repository from client systems and seamless tracking of object history.
Getting a SVN client
We recommend Linux, Mac OS X and other Unix-like system users to use the official, command-line based Subversion client from the Apache Foundation, which you can get by installing the “subversion” package with your package manager. There’s a freely available book documenting this client as well.
Windows users may find themselves at home using TortoiseSVN, a SVN client which integrates itself into the Windows file explorer interface.
If you only intend to take a quick look at the repository contents, you can do so using the neat web interface provided by SourceForge.net.
If you have a Subversion client installed on your machine, you can checkout an add-on from the repository using a simple command:
svn co svn://svn.code.sf.net/p/wesnoth-umc-dev/code/<PATH>
Read/write (commit) access:
svn co --username=<USERNAME> svn+ssh://<USERNAME>@svn.code.sf.net/p/wesnoth-umc-dev/code/<PATH>
Where <USERNAME> stands for your SourceForge.net account name (if applicable), and <PATH> stands for the directory you want to download. Once the checkout is completed, you can update it in the future using the
svn up command.
By omitting the path to the add-on you would be instructing your SVN client to checkout the whole repository, which is certainly NOT what you want in most cases.
Structure and organization
The Wesnoth-UMC-Dev repository is slightly unusual compared to other open-source projects. This section describes in detail what each tree in the repository is meant to be used for, what it contains, etc.
- Hive/supertree/major tree: the directories located immediately at the repository root, such as /trunk and /branches.
- Superbranch: a branch containing multiple distinct inner branches.
SVN trunk houses add-ons currently targetted for the mainline Wesnoth development trunk, which usually corresponds to the current development/beta/RC release series. These add-ons are likely to break when used with game versions other than the author’s recommendation.
The /branches supertree contains divergent development paths forked from trunk and non-WML content used by the repository admins for maintenance work.
Branch forking operations are performed by the project staff only, in order to ensure a safe and clean transition for authors working on a particular add-on.
These branches are named in the X.Y format, where X and Y correspond to the major and minor version numbers of their intended target game release series. Old add-ons are migrated from trunk to a version branch during the time following the first mainline release in the branch, and new add-ons are expected to enter a version branch if they aren’t targetted for trunk.
Additional version branches are found under the backports and testing superbranches. These are not used anymore and may be removed at some point in the future.
Content deemed unsuitable for inclusion in mainline for quality or obsolesence reasons, plus other extras can be found in the resources branch. This content is freely available under license terms compatible with the official add-ons server and may be copied and used in new Wesnoth add-ons.
Tools and resources for repository maintenance and project administration are housed under the maintenance-toolchain branch. These files are the sole territory of the Wesnoth-UMC-Dev staff and they are of little interest to most UMC maintainers.
Descriptions of the individual tools can be found in the Wesnoth-UMC-Dev toolkit documentation page.
This hive is dedicated to keeping record of add-on release/milestone tags under trees named according to /trunk and the X.Y maintenance branches. Although add-on authors are not required to take advantage of the SVN tag idiom to keep track of what revisions they use to fork their official release packages, we strongly encourage them to do so. Further information about tags can be found in the SVN book.