HOWTO Patch the IRRToolSet

The IRRToolSet has a lot of "bitrot". It had no requirements or design documents, passed through many different developers, and everything from the operating systems to the compiler (gcc) to the language itself (C++) changed out from under it. So, if you see something strange in the code it probably is strange, and not just you misunderstanding it.

Do not be afraid.

It does work, and you can make it work better!

Getting the Code

The code now sits in a Subversion repository. Google has lots of help with Subversion, and you can always ask on the mailing list.

To get a "full" copy of all the code, you can use:

svn co svn://irrtoolset.isc.org/

However, if you are only interested in the main trunk, you can check out only that:

svn co svn://irrtoolset.isc.org/trunk

You can also check out a particular branch:

svn co svn://irrtoolset.isc.org/branches/$branchname

Making a Ticket

Almost every change should have a ticket. On the Trac site, simply choose "New Ticket" and enter the details about the change or fix that you are doing. Go ahead and make yourself the owner, unless someone else has agreed to work on it.

Write Access to Repository

The Subversion users and passwords are in /var/irrtoolset/svn/conf/passwd file on the server. One of the developers can give you write permission to the repository if you want it and they trust you.

Changing the Code

If you have a small change, go ahead and make it in your local copy of the trunk. Make sure it builds, at least on your system.

Then you can make a diff to send to the list for discussion like this:

svn diff > $something.patch

If you have a large change, you may want to create a branch:

svn copy svn://irrtoolset.isc.org/trunk svn://irrtoolset.isc.org/branches/$mybranch

Then you can submit changes in your branch. When it looks good (ask another developer) and you can use the merge facility of Subversion to merge the changes into the main trunk

svn merge svn://irrtoolset.isc.org/branches/$mybranch svn://irrtoolset.isc.org/trunk

Instructions for copying an entire branch into the trunk can be found at  http://www.sepcot.com/blog/2007/04/SVN-Merge-Branch-Trunk.