Stop Breaking the Build
Cap'n Grumpy writes "You know the score - you've just finished some coding, do a final cvs update before commiting, and all of a sudden all hell breaks loose. Your code now refuses to compile, or xunit starts flashing up red - test failures! One of the other members of your team has checked in something which breaks the build, and they just went out for lunch ... Argh! Did you know there is a solution to this problem? It is a system which makes it impossible for people to check in code which does not compile or test successfully. It allows coders to review others coding efforts code before it goes into the baseline, rather than after. It organises your checkins into logical change sets. It enforces continuous integration. It is linux based, and GPL'd. It's called Aegis."
run the code through a lameness filter before allowing the check-in
enforce a 20 second delay from the time you want to check-in to the time you are actually allowed to check-in
make sure a different developer checks-in the exact same code a day or two later
Is it just me or does this sound like an advertisement?
Allowing multiple developers to edit the same file at the same time is inherently more dangerous than a more conservative approach. Open Source has it's own special needs, but for closed source development you should rarely need to edit the same file unless your team is poorly organized or system poorly designed.
Well, I think there is more work done on unix systems, and more programs are developed for unix systems than there is for windows systems.
The server side of computing is not really as narrow as you have explained it.
Another thing is, no, not everybody uses Windows, I do use it, but since we are here in slashdot, I'm telling you that most of the users around you use, and love, linux and apple systems, and use them as workstations as well (I have a linux work station although it's not my main pc too).
The idea that developing programs for windows is more important is wrong, I really don't like to spend my time developing a program to help Microsoft gain more power in the monopoly.
I am not much into software development for the time being, but if I get into that I'll always make sure to build programs for linux BEFORE Windows (or make portable solutions).
It's just that Unix is a nice OS for MANY things, not some things!
"What you 'seek' is what you get!"
(And for that matter, if you need to track software bugs & other issues, RT rocks. Don't bother with Bugzilla, it's not half as good as RT is for most of the same tasks. And no, no one is paying me to endorse RT or anything, it's just great software and, in reference to Aegis, I respect the judgement of the guy developing it...)
DO NOT LEAVE IT IS NOT REAL
There is a rule for check-ins when my team is trying to stablize code; that is have another developer go through your changes in case you did something silly. It also serves as a mini code review. This includes making sure the code builds. :)
Yeah, it's a troll. Still, I feel like munching on a little troll.
In fact, there are more installed UNIX servers in large scale operations than there are Windows servers (I work for a company that sells hundred-terabyte disk storage systems, to those exact operations, and more than 60% of our non-mainframe-using customers are using Solaris, AIX, and HP/UX, with Windows rolling in at about 35%).
On the whole, Windows is completely unsuited to enterprise-level programs and projects. It has a laughably low limit on the number of attached disk devices, as well as ludicrious limits on how big those disks can be. Sharing disks between clusters of Windows servers is tenuous, at best, and not recommended for high-risk environments.
Unix(es), on the other hand, grew up in the enterprise, and is quite well suited to that environment. Just as an example, I am aware of at least ten multi-national banks that operate only Unix in their transaction processing centers, which is one of the most demanding enterprise solutions available. Only Unix. No Windows in any of their datacenters.
The fact that there may, or may not, be a system like Aegis for Windows is irrelevant to your original message, which explicitly anointed truth to things which are wholly untrue.
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. (Einstein)
Yeah, but what if your build takes over an hour? (Like where I work) Say you need something checked in, like now. You're sure it works, but you have to hang out for an hour to make sure it went in? There is a certain level of trust you need in a development environment. Waiting for it to completely rebuild simply isn't always an option.
Sure, you can generally do partial builds. But what happens when you just had to change that include file that somehow effects nearly everything else? You're stuck for that hour.
1) Post advertisements as news articles
2) ???????????????????
3) Profit!!!!!!!!!!!!!!!!!
Yes, you're blocked from checking stuff in until the test build finishes, but even though you are SURE it works it's better to have a sanity check just in case.
Have some coffee, fill out the TPS report, look at pending bugs. There's a few things you could be doing during that hour.
I have been pwned because my
...and they just went out for lunch ... Argh! Did you know there is a solution to this problem?
Go to lunch.
Does your development environment include a command-line?
If so, then it's trivial to use another version control system.
Assuming that eclipse CVS support invokes the cvs
command for its operations, it would be trivial to
make a cvs-compatible commmand line for aegis.
-I like my women like I like my tea: green-
Well, as odd as this might sound, when anybody checks anything to our source control that breaks the build, they have to go out and buy the entire development team a coffee and/or chocolate cookies. This worked like a charm. It not only raises awareness and makes people more careful, it has actually increased moral in the team as we look forward to the weekly build to see who has cocked it up :-)
Never, ever lose a file again. Ever.
2-3 times a month we get Krispy Kremes. That is the penance for breaking a nightly build. Engineer or build meister. Screw it up and bring in the donuts.
The base ball bat. At my work after we beat the first few developers to a pulp after they checked in broken files, we found that the rate of broken files decreased dramatically
Okay, I agree with you that the /. editors were on crack when they made that call. But the idea of "filter before checkin" has been in CVS for a long, long time.
Basically, there's a file in CVSROOT that can call an arbitrary program. If that program succeeds, checkin proceeds. If it doesn't, it doesn't. :-)
I was very surprised to see this article treat such an idea as something new.
You cannot apply a technological solution to a sociological problem. (Edwards' Law)