There are two ways to obtain the source code to the open-source projects. The Pixelspark Subversion repository contains the official version of the source code, reviewed by Pixelspark and other authorized developers. The repository at Github is a mirror of this tree. The benefit of using Git is that exchanging patches and working in a distributed way is much easier. Note that there may be so-called 'forks' of the project on Github; these are copies of the project with custom changes (that Pixelspark of course does not support).
The DoIP libraries and applications use libraries from CoreSpark, an open-source collection of libraries. If you check out DoIP using SVN, these libraries are automatically checked out too as an external. If you are using Git, you will have to obtain the source code to CoreSpark and put it in the Core/ and Libraries/ directories yourself. Note that simply cloning two Git repositories in the same directory is not possible, so you should probably check both projects out to a different directory and then use symbolic links (only possible under Linux/OS X/other Unix-based systems).
See also:
If you have made a change to the source code that you would like to be included in the main version, please create a 'patch' of your changes and send it to us. Both Subversion and Git have ways to create such a file. People that frequently contribute changes can become 'committers', which means that they can directly commit changes to the repository. A list of current committers for our projects can be found here.
The Subversion repository of each project contains three top-level folders: trunk, tags and branches. If you are a developer, it is likely that you need the code in the 'trunk' folder. The trunk reflects the most recent version of the project's source code; nevertheless, it may not be stable or may not even build (although the general policy is to only commit to trunk if the code builds on at least one platform). The 'branches' folder contains snapshots of stable versions of the trunk. Changes can still be applied to these snapshots (hence development of new features happens on the trunk, while for instance bug fixes can both be applied to trunk and a stable branch). Finally, the 'tags' directory contains snapshots of particular minor versions of the source code. These are mostly used as a reference; new changes should not be made to these copies (although it is possible).
To check out source code using Subversion (and to be able to commit your changes or to create a 'patch file' that lists your changes), you need a Subversion client. Apple's developer tools include a Subversion client (if you have XCode, you most likely also have Subversion). Clients for all platforms can be obtained on the Subversion website. There are also a few excellent GUI-based clients (TortoiseSVN for Windows, Versions for Mac) that we highly recommend for both novice and experienced users.
Once installed, the Subversion client is available at the command line (Windows: Start→Run→'cmd'; Mac: the 'Terminal' application) by typing 'svn'. Of course, simply typing 'svn' doesn't do very much. The SVN (which is short for 'Subversion') client supports various operations, the most important of which are listed below:
With Subversion, you work on your own copy of the code and periodically send your changes to the repository or receive changes from others. Subversion makes sure that these changes are correctly 'merged': if someone else changes a line of code that you did not touch, this will work fine. In some cases however, changes may conflict. If this is the case, Subversion will notify you, and you will have to tell Subversion which change you accept.
For operations that change the repository, Subversion requires a 'log message', which is a short description that tells the other developers what you have done. The log message can be supplied to the Subversion program with the -m parameter (i.e. ”-m 'Changed some files'”); if you do not specify it this way, Subversion will ask for it by showing you an editor (it will use your default command line editor, which on Mac happens to be 'vi', which is not very friendly for beginners; if you want to use the much easier-to-learn 'nano' editor, just prepend 'EDITOR=nano' before the subversion command).
To check out the code, you must tell your Subversion client to check out the URL that is given above for the project. If you use a command line client, this can be done as follows:
svn checkout https://svn.pixelspark.nl/svn/doip/trunk doip
This will make a directory 'doip' in the current directory and download all source files from the 'trunk' directory to it. If you want to check out a particular branch or tag, then change the URL. It is also possible to download a subfolder or file. Note that SVN may ask some questions about the SSL-certificate used at svn.pixelspark.nl (which is self-signed and therefore does not guarantee authenticity, but it does encrypt traffic).
An excellent tutorial on Git can be found here. In short, here are the commands that you might want to use:
git clone git:github.com/pixelspark/doip doip.git > git fetch