List of changesets and updating
For projects that have a large number of contributors, it's common for most people to have working copies of the trunk.
Whenever someone needs to make a long-running change that is likely to disrupt the trunk, a standard procedure is to create a private branch and commit changes there until all the work is complete.
We reached a point where we needed to accommodate several thousand builds per day, and we started seeing performance problems on multiple fronts: servers became slow to respond, we encountered unexplained errors that we could not fix, new changes were processed very slowly causing delays, webpages took several minutes to load, etc. and both can be hard to get with off-the-shelf proprietary solutions).
After a year of back-and-forth with the makers of Team City, and a progressively worsening state of our build infrastructure, I came to the conclusion that the best path forward for us was to switch to a solution that better suits our particular needs (obviously when you have a way of working that is as particular as ours, combined with our scale, extensibility and flexibility are a necessity in any tool . Being a long-time open-source enthusiast, I felt this was a particularly good scenario to leverage the power of open-source to fix our problems.
After some research, I decided that we would build a custom solution on top of Buildbot — an open-source continuous integration framework used by Chromium, Mozilla, Python, and various other projects.
This is where the bulk of feature implementation was done.We knew we wanted the ability to decouple as many parts of the build infrastructure as possible to allow for easier maintenance and debugging.After around two months of prototyping and proof-of-concept work, we were confident the toolset we had chosen would work — with some serious investment.In late January of this year, we switched our mainline to building officially on Katana instead of Team City.