How to cope with patches sanely
Manoj Srivastava
srivasta at debian.org
Sat Mar 1 16:40:16 UTC 2008
On Sat, 1 Mar 2008 12:21:03 +0100, martin f krafft <madduck at debian.org> said:
> also sprach Manoj Srivastava <srivasta at debian.org> [2008.02.29.2153
> +0100]:
>> 3) I propose ./debian/branches/{TopicA,TopicB,TopicC}.diff.gz
>> files. Each diff, applied to the orig.tar.gz , shall recreate for the
>> interested user the corresponding branch in my development.
>>
>> Bingo. With this addition, every user that want to see where the
>> integration branch comes from can examine each topic patch or topic
>> branch. Each of these topic branches can then be compiled and
>> experimented with. Upstream can incorporate each of these topic
>> patches, if they wish.
> ... until I want to play with two branches at the same time, or
> upstream wants to pull two branches. Now you are forcing users to deal
> with potential conflicts.
I am not asking users to do any such thing. I am asking
developers who want to play with tweo unrelated and conflcting features
to do some integration work, with my integration branch to use as an
example to see how such conflicts can be resolved.
If you are a developer, and want to play with conflicting or
overlapping features, and can't do integration work given a working
example of how such integration can be done, stay away from the
kitchen. I am not going to jump through hoops to cater to your
incompetence.
>> The downside, of course, is shipping the same patch twice, once in
>> the diff.gz, and once in ./debian/branches/*.diff.gz.
> I don't see the added value in your approach. I don't see the use
> case. I know your workflow and note how this is a continuation
> thereof, but I can't identify the benefit to others and the project in
> doing this. Do you really think there are many people or upstreams who
> want pristine feature branches without being able to use the net?
I am providing people with the same development infrastructure I
use, in the debian source package, without impacting
repeatability. There was a criticism that the source package that
contains only a diff.gz is fairly opaque to developers -- and that an
explanation should be provided to how the diff.gz came about, and what
are its constituent parts. I am providing people a better understanding
of each feature by putting in stand alone, and not making it dependent
on a bunch of unrelated features.
Let me reiterate the goals I put forth for me:
>>> A) All the branches that I use (the pure feature branches, the
>>> upstream branch, and the integration branch) should be made
>>> available to the users. This will give them the same environment I
>>> have, and thus they have the preferred place to make modifications.
>>> B) When people do dpkg-source -x, they should have a fully unpacked
>>> tree that is compiled, with no further action that needs to be
>>> taken
>>> C) In order to reconstitue all the other branches, no network
>>> connectivity should be required. There a lot of people in the
>>> developing world that do not have a readily available network
>>> connection -- my solution must work with source DVD's
>>> D) No knowledge of my SCM should be required. People should be able
>>> to construct the topic branches without knowing arch or git or bzr
>>> or Hg or what have you.
I am also providing developers the pure features, uncluttered by
integration junk, so people can see what the intent of the changes was,
cleanly; and apply any such feature to upstream, and have it work.
There is a combinatorics problem here. If you have N features,
you might want to see them one at a time, two at a time, three at a
time .... or N! ways. I provide the common cases: One at a time, or all
at the same time.
People who want the rest of the N! ways may have to do some
integration work -- but I do provide a working, fully integrated
example for them to program by example from.
> Why wouldn't these people be helped with a quilt series? They just
> want to work on feature B, do you think they actually care that quilt
> first pops A before it applies B, especially with tools like interdiff
> around?
Show me the code. Get me a quilt series from my feature
branches. Until you can get me an automated way to get a quilt series
from my work-flow, the quilt series option is off the table. I find a
quilt series to be inferior to topic branches. I understand others do
not feel that way. I am not forcing them not to use quilt -- though
that would, in my opinion, improve the quality of the distribution.
Stop trying to make me put in work to use quilt.
I dislike the extra work and indirection of using patches (I
am much better at reading code than reading code + patch). I dislike
the extra effort it takes to read code in different branches without
doing extra work, poping and applying stuff -- and dealing with the
integration work every time you pop and reapply and there is a
conflict). I am never going to use quilt -- and if you try to force me,
fffft.
Now, if y'all put your money where your mouth is and come up
with a quilt creator from my arch branches, sure.
At this point, I can create the branch patches in an automated
fashion -- though I have not yet done so for any packages uploaded so
far.
If you go the my way (quilt) or the high way raod, with no
compromises, you'll end up getting nothing.
manoj
--
Alimony and bribes will engage a large share of your wealth.
Manoj Srivastava <srivasta at debian.org> <http://www.debian.org/~srivasta/>
1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C
More information about the vcs-pkg-discuss
mailing list