Aren't situations like these the entire point in CVS? If so, isn't it doing a pretty bad job?
(From Alex: No, it's not CVS's fault if we hit a conflict.)
Posted by Ben Basson at January 19, 2006 12:31 AMPerhaps its time to introduce a checkout monitoring system for individual functions. The checkout could be used to help manage who is changing what. If necessary, it could allow multiple people to check out the same thing, but at least warn them (and the others who checked it out) that multiple copies of the same module are checked out. This would give you a chance to take a look at the other bugs to see if it is really worth making your code change.
When you check out a bit of code, it would automatically notify you if anyone else is editing that code (or any interfaces for code that are called that code). Also, while you have the code checked out, you would be e-mailed if anyone checked in/out code related to your code. When you finally check in the code, it would automatically take you off the list.
You could check out the interface to function xxx (meaning you are going to change the arguments/return value of the function). Alternatively, you could just check out the implementation of the function (or even just a snip of code), but the overall interface and functionality of the function would not change.
Of course, this creates another obstacle to fixing code. However, as the Mozilla codebase gets more complex, and more people simultaneously make code changes, it is a necessary evil.
(From Alex: I think conflicts like the one I had are relatively rare. Believe me, my rant is meant to be taken with a large grain of salt.)
Posted by Racer at January 19, 2006 7:04 AMFwiw, as far as rare goes... I get to merge 2-3 things a day, usually. ;) So they're not _that_ rare.
But yes, this is the point of CVS, and CVS is working right in this case.
Posted by Boris at January 20, 2006 8:56 AM