Forgotten patch: qofid.diff

Neil Williams linux at codehelp.co.uk
Fri Oct 28 16:19:52 EDT 2005


On Thursday 27 October 2005 4:36 am, Chris Shoemaker wrote:
> > We need quick and open ways to publish *early* code - pseudo code if you
> > will. Designs, plans, ideas. Rough hacks, concepts, logic. Code that is
> > certain to break the sacrosanct CoreBuild. Branches are part of the
> > answer but, as Derek pointed out, technology isn't the answer to
> > sociological problems.
>
> I know nobody liked my ideas about branching, but maybe I'm just using
> the term differently than others. 

It's certainly how I understand the term. I use makepatch to handle my 
changesets but my process is long winded:

1. Ensure all changes are in local CVS from /opt/working but do NOT update my 
own pristine source in /opt/devel
2. cvs update in /opt/forge that contains the pristine gnucash source.
3. makepatch with /opt/devel as old and /opt/forge as new. This gives me a 
single patch that covers all changes since my last commit to remote CVS.
4. View the patch and check for conflicts with files I've been changing 
locally. This is a time consuming stage.
5. Copy files around if I haven't changed them myself and hack remote changes 
into my modified files. Resolve conflicts and post to the list!!!
6. Now update /opt/devel with my local changes and the remote changes and my 
hacks to combine the two.
7. Remake the makepatch to see what I might have missed.
8. Set the scripts running to build various trees (6 at present count) while I 
go off and do something different.

> There's a interesting case-study 
> right here.  In my view, *every* time you're writing code, you're
> implicitly branching whether you realize it or not. 

Yes, a local, working copy that contains files that you are actively modifying 
is just a local, uncommitted and unreviewed branch. It is precisely at this 
early stage that others can be most useful in the peer review process and 
where interventions are easiest to incorporate into new code.

> order to merge E->D.  Of course, what we *want* to do is not really
> merge E->D, but only merge the delta from B to E into D. 

Yes, what I want is not the makepatch from forge to old local, I want a 
makepatch that synchronises forge with working WITHOUT losing the changes in 
the working tree. It's complicated and not easily automated with current 
tools. Current patching tools simply force the old tree to become the new - 
byte by byte, what I need is to merge the *changes* from forge into the 
developing code in working/ without losing other changes.

I'm changing files in working/ all the time - the worst time is when I'm 
preparing for a commit and someone else also makes a commit. Because of this 
single build problem, my commit process has to start all over again. It's 
mind-numbingly frustrating.

All I want is to be able to commit my changes, independent of anyone else's 
changes, but the current system won't allow that.

CVS patches the remote files to be exact copies of my local files which is 
wrong. I want to only send my changes and let them be independent of 
unrelated changes in other parts of the tree or other files in the same part 
of the tree.

> Now, I've seen this pattern probably 20 times (not with gnucash) and
> it can get pretty hairy.  The only time this process doesn't really
> suck is when I know somebody's been merging my code, and exactly what
> state they were merging from, (like now).

Which is why we NEED more publication of the DEVELOPMENT code, not the 
finished "CoreBuild" code.

> IMO, this is a PITA, because I *REALLY* DON'T WANT TO CARE who's been
> doing whatever with whatever I've written.  I'm *sharing* my code for
> a reason: I want other people to benefit from it.  That benefit is
> severely diminished if it's a pain for other people to independently
> improve my code and still retain my further improvements, too, or if I
> have to keep tabs on everything that happens to every revision of my
> code just to make it *not* a pain to incorporate further improvements.

Wholeheartedly agree. It is a severe PITA that unrelated changes in completely 
separate folders require a complete merge and rebuild to regenerate my 
potential patch for the commit. The ONLY reason for that is the insistence on 
not breaking the CoreBuild.

I don't know if my changes will break the build when placed on top of someone 
else's changes, I only know that they do NOT break the build when placed over 
the code BEFORE that person's changes. To avoid being flamed (again), I have 
to delete the entire commit patch and start all over again. WHY? (fear).

> I actually don't have any problem with there being some branch
> (whatever it's called) that has a very high standard for merging.

Neither do I, as long as there is an easier way of creating and reviewing lots 
of other branches / series of changesets.

> Now, I certainly don't want to be the one responsible for maintaining
> it, but I'd sure have a healthy amount of respect for anyone who did.

We would have to share that burden - when our own branches DO get to 
finished / build-ready code, not before.

> 1) stream a bunch of patches to -patches that don't always compile,
> are obviously incomplete and ugly, have dependencies higher than our
> target release, probably break the build, and probably shouldn't be
> applied by anyone not working on the register rewrite; and hope
> Didier's tools are handy enough to autosuck patches from email (oooh
> distributed development 1980's style)

Not the easiest way for others to review the code - I found it quite hard to 
compose that reply to your budget code about the QofClass because reading a 
diff in an email client isn't natural.

> or 2) take this into a back-alley and get some real collaboration
> going, even though it'll be in relative isolation from the people who
> have the most to offer in terms of assistance.

Which is why cashutil was mooted as a potential SourceForge project and why it 
still has a back-alley feel because the current CVS isn't publicly accessible 
(the server wouldn't take the load).

> *sigh* Ok, I'm done.  :( Please include the word FLAME in the subject
> of your response if I'll need my asbestos underwear.

Not from me, I'm right in the dog-house with you, Chris!

-- 

Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.gnucash.org/pipermail/gnucash-patches/attachments/20051028/ad243295/attachment.bin


More information about the gnucash-patches mailing list