On 01/06/2010 11:04 PM, Greg Hudson wrote:
> On Wed, 2010-01-06 at 21:26 -0500, Mark Mielke wrote:
>> There is a race between the pull
>> and push whereby somebody who pushes before I pull will cause my push to
>> fail, but we generally consider this a good thing as it allows us to
>> analyze the change and determine whether additional testing is required
>> before we try to submit "pull and push" again.
> I've certainly heard this argument before, and I think it makes sense
> for some projects.
> However, I've heard from some people that they work on projects where
> they would never be able to get any work done (that is, they would never
> be able to commit anything in a reasonable amount of time) if they
> always had to pull before pushing and hope that no one else pushes in
> the mean time. Those projects are simply too active to support a "pull,
> test/analyze, and push" development model.
> In some cases this is because "the project" has been defined to be
> larger than it really needs to be. For instance, the ASF repository
> would be pretty frustrating to use if always you had to be up to date
> before committing, but it's easy to see how the ASF might have created
> separate repositories for each project instead of what it did. In other
> cases "the project" is not so easily subdivided.
Yep, it's a valid point - both that some projects find that they cannot
get anything done, and that these projects have probably scoped their
streams to be too large.
Still, we have work spaces that are 10+ Gbytes in size with 100+ users
working on the same streams. We find that more mistakes are made in
larger projects, and the mistakes become more costly the longer it takes
for them to be discovered ("downstream consequences"). The worst case is
if the issue is discovered in the field! Looking at it this way, the
fact that it happens so frequently that it would be annoyance to a user
may be proof that something is wrong and more care (test/analyze) is
required. Using a mixed revision working copy is somewhat like sweeping
the problem under the rug and crossing our fingers. It may appear to
improve productivity, but it may have the opposite effect.
I think the only time it is safe to allow submission without update is
if the users who work on components that depend on each other always
communicate well. In the simplest case, and a common case, the code may
be broken into components, and different components problem have
"owners", and since all changes pass through these few "owners" (might
only be 1 owner for a particular area), good communication can be
ensured. In this case, I really do not care what you do in your entirely
different and unrelated component.
But, as I think you describe above - if my component is completely
unrelated to your component, why are we in the same stream? A good
answer might be to move the unrelated components to their own streams.
Received on 2010-01-07 05:44:33 CET