I am having trouble defining and automating my build process despite simple requirements:
- Every build should have a unique build number.
 - Every tagged release should be reproducible
 
What I have:
- A C++, Red Hat Enterprise Linux 5.x, Subversion development environment.
 - A build machine ( actually a virtual machine )
 - A version.h file with #defines for major, minor, and buildnumber.
 - A script for incrementing the version.h buildnumber.
 - A rpmbuild spec file that exports the tagged Subversion source, builds, and makes the rpm installer packages.
 
Questions:
- Assuming multiple developers per project, when should the build number be incremented and version.h file be checked-in? The build machine? Some sort of Subversion hook? Pre-build or post-build?
 
Thanks in advance for those willing to take the time to share their experience with build processes.
-Ed Linux newbie. Former Windows C++/.NET developer.