> Hello, > I know this has been asked already, but we would really like to reject any > attempt to commit files which would break a project in trunk. The decision to > reject the committed files is based on the result of the building process of > the > project the files being committed belong to. I know that during the pre-commit > phase the repository cannot be accessed concurrently, but this is not a > problem > for us since our buildings are really fast and we can tolerate any delay > involved. > Are there any tools to achieve what we want? Note that it will be necessary ro > recompile the whole project unit, not just the single files being committed. > Thanks.
I don't think there is ever a 100% certainty that a commit won't break a build even if that commit was ok on another branch. What is the problem you are trying to solve by doing this? One major point of continuous integration is that your builds break early, giving instant feedback so the dev can fix this issue. You can "move" the problem to a branch. All commits go to a branch and after the branch builds your build server merges that branch to trunk (or whatever) but that may still break the trunk build. This is best dealt with procedures. Do your devs have the same build.bat file (or whatever) that the build server does? They should... this way they can... 1. Make code changes test locally. 2. Update their working copy, run same build/test local that the build server runs. 3. If step two is successful commit to the server. BOb