Re: How to cope with patches sanely
On Mon, 25 Feb 2008 19:11:16 -0500, David Nusinow <email@example.com> said:
> On Sun, Feb 24, 2008 at 09:31:10PM -0600, Manoj Srivastava wrote:
>> On Mon, 25 Feb 2008 10:34:55 +1100, Ben Finney
>> <firstname.lastname@example.org> said:
>> > Manoj Srivastava <email@example.com> writes:
>> >> David Nusinow <firstname.lastname@example.org> said:
>> >> > No matter what you want to say about your feature branches, you
>> >> > *must* apply them in a linear fashion to your final source tree
>> >> > that you ship in the package. This is no way around it.
>> >> But there is no such linearization, not in the way that quilt et
>> >> al do it. The state of such integration is not maintained in the
>> >> feature branches; it is in the history of the integration branch.
>> > Is this (the integration branch and its history of changes) not the
>> > linear sequence of changes that David Nusinow is asking for?
>> No, it is not. I Apply a update to feature A. The comes an upstream
>> update. Then updates on feature B, a patch that needed conflict
>> resoution, then patches on branches C, D, and A again. Another
>> upstream change.
>> At this point, none of the original patches to A, B, and C apply any
>> more -- and then come another upstream update, and all the patches
>> get even more bent out of shape.
> At this point, before you're ready to release, you regenerate the
> patches. Then they apply just fine. Nothing gets bent out of shape
> and you don't include old code in your patch that's now incorporated
> upstream, you just make an appropriate diff that applies cleanly to
> your source package. I don't see what the problem is here and why you
> believe this can't be done.
Sure, I can re-generate the patches: but then I have to do all
the integration work that I did for the integration branch over the
years, and I have to do this over and over and over again every single
darn package upload.
And why am I doing all this busy work?
A compromise would be to provide a patch for each pure fearure
branch, along with the giant diff -- this can be automated. But these
individual patches will not apply in sequence unless the manual
integration work is done again -- which is not something I am willing
to do for every package upload.
#else /* !STDSTDIO */ /* The big, slow, and stupid way */ --Larry Wall
#in str.c from the perl source code
Manoj Srivastava <email@example.com> <http://www.debian.org/~srivasta/>
1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C