Hello Joachim,
These are good questions, and will be interesting for others as well.
- if nant buildRelease is called then either buildReleaseWindows or buildReleaseLinux is called according to the current platform in use.
I can see that both targets execute different commands. Would it be possible to create a release for linux on a Windows-platform and wise versa (in order to not having to switch between 2 computers) or is it necessary to have a linux machine for building a linux release (and wise versa)?
buildReleaseWindows uses InnoSetup, which does not run on Linux. The alternative would be to use Nullsoft Installer, there are Debian packages for that. I did some experiments, but could not get it to work in the short time I had for the experiment.
buildReleaseLinux uses symbolic links for the tar.gz file, I think. And building RPM or DEB packages from Windows would not work either.
So I guess, the easiest is to build on the system where it should work in the end.
- what is the difference between clean, quickClean and cleanPetra? When should I use which one?
clean walks through all directories, and cleans all the files by name. quickClean deletes certain directories, and certain files by their extension. So clean is very thorough, but quickClean is faster but might forget a few files. cleanPetra is just a combination of clean and quickClean. I don't know if clean forgets files that quickClean deletes? Perhaps Thias knows more about this.
when should patchDatabase be called?
When we make a new release, we increase the development version to an odd number, eg. 0.2.9, in db/patches/version.txt. If something changes in the database structure, we should implement this in the patch sql files in db/patches. nant patchDatabase will call that patch sql file, and update the version number in the database. This is necessary, because the OpenPetra server validates the version number of the code against the version number of the database. We want to use the same version number for both.
Each developer has to run nant patchDatabase, when we upgrade the repository for the next release. Otherwise you would need to recreate and reset the database, but would lose your own test data.
is there a general overview or a diagram about which target is called by which?
Not that I knew of.
Timotheus