[Developers] Re: patch: CactusEinstein/IDAxiBrillBH cleanup

Tom Goodale goodale at cct.lsu.edu
Fri May 20 08:37:50 CDT 2005


Hi Jonathon,

On Fri, 20 May 2005, Jonathan Thornburg wrote:

> Hi, Tom,
>
>> In general, small, specific patches will get quicker attention, and thus 
>> lower latency, than big patches which do lots of different things.  If 
>> you'd sent a note out to developers that you were doing this, and followed 
>> with a sequence of patches as you did things, it would have been easier.
>
> Well, actually I _did_ send a note out to developers about an early
> (partial) version of this set of changes.
>  http://www.cactuscode.org/pipermail/developers/2005-April/000822.html
>
> It wasn't a full-fledged "patch" then, because I didn't yet think I
> had a working version of IDAxiBrillBH.  (In hindsight I _did_ have a
> working version, the bugs I was seeing lay elsewhere.  But I didn't
> know that then...)
>
> The only reply I saw was from Erik,
>  http://www.cactuscode.org/pipermail/developers/2005-April/000823.html
> suggesting that I keep backwards compatability.  Inspired by his
> suggestion, I did so in my later changes.


Oops, sorry, I obviously missed that one, and didn't check back far enough 
in the archive.

> There is a larger problem, however:
>
>> although as you note at the bottom it
>> would be good if you could split the commits into smaller units, each
>> addressing an individual thing, e.g.
>> 
>>      relabeling latex
>>      adding comments to param.ccl
>>      adding the interpolator parameters
>>      adding new output (I agree that it should really be a GF so we can
>>                         use standard Cactus IO methods)
>>      add debugging stuff
>>      adding new stuff to the documentation
>>      etc
>
> Let's look for a moment at the process by which I could do this:
>
> 1. start with old version from CVS
> 2. discover and fix problem #1
> 3. create 'version 2 - version 1' patch, write description,
>   and send the whole thing to the appropriate mailing list
> 4. go on to discover and fix problem #2
> 5. oops, how do I create a 'version 4 - version 2' patch?
>   I don't have a copy of version #2 any more, and it's not in CVS
>   (because the 'version 2 - version 1' patch hasn't been approved yet)
>   Ok, so I need to check out a clean copy of the old version from CVS,
>   and roll it forward with the 'version 2 - version 1' patch.
>
> As you can see, this gets rapidly (maybe even quadratically) messier
> as one accumulates more and more changes.  By the time you get the
> dozen-plus changes incorporated in my current IDAxiBrillBH patch,
> it's just not practical.

I tend to agree, that's why I said it would have been good to have patches 
as time went on, rather than one big patch at the end.  Your original mail 
was about making more general interpolator stuff, however your final set 
of changes is much more extensive.  At this stage it is difficult to 
seperate them, but even now documentation changes could easily be split 
off.

> I admit that, had I known 6 weeks ago that I was going to make such
> extensive changes, I might have saved lots of intermediate versions.
> But I didn't.
>
> 	[In fact, it's even worse than that.
> 	Even if I had saved a 'version 2', a "version 4 - version 2'
> 	patch wouldn't apply cleanly after the 'version 2 - version 1'
> 	patch had been committed... because the $Header:$ lines
> 	in all the files will be different.]

I don't think that's insurmountable, and diff and patch are fairly good at 
things.  However if you submit patches as you go on, it is easier.

> So, to repeat the closing question from my patch message:
>
>> Apart from "switch to darcs", is there an elegant solution to this
>> problem?
>
> Should I create a private CVS branch for each code change that I
> think I might eventually want to submit as a formal patch?

I think that would probably be overkill, and I'd certainly not like to 
have branches except for really major changes where intermediate states 
may be completely unstable.  Lets see how we get on with more frequent, 
smaller patches and review if it turns out to be unworkable.  Note that 
even if you were committing immediately, without waiting for approval, I'd 
have asked for such a split-up, so it's not specifically an artifact of 
the patch-approve-commit cycle.

I agree that our current setup is far from ideal.  In the ideal case 
people would not be using the "development, unstable" version of the code 
for everyday work so I'd be less paranoid about it.  However with current 
resources it's proven impractical to have more frequent beta releases and 
thus to tell people to use the last released beta.

We will almost certainly move to a different version control system, or at 
the very minimum modify our use of CVS, in the future, but I keep hoping 
that we can release 4.0 final before doing a major shakeup of the 
infrastructure.  My current best estimate for that, though, is sometime in 
July.

On the subject of darcs, how have you found it in general, and have you 
had any problems with it on any architectures ?  How is its performance ?

Cheers,

Tom



More information about the Developers mailing list