Re: How to cope with patches sanely

2008-03-16 Thread Raphael Hertzog
On Sun, 03 Feb 2008, Raphael Hertzog wrote:
 On Sat, 02 Feb 2008, Charles Plessy wrote:
  Is there sombody working on WigPen? Is the format consensual enough
  that it would be accepted in Debian?
 
 I plan to work on it (but have not done anything yet except thinking about
 it and following discussions), the format might need some tweaks (explicit
 list of patches instead of implicit for example) but the basic principles
 are sane and I believe it will be accepted in Debian.

The wigpen format has been implemented and much more:
http://www.ouaza.com/wp/2008/03/16/new-source-package-formats-call-for-tests/

http://lists.debian.org/debian-dpkg/2008/03/msg00155.html
http://lists.debian.org/debian-dpkg/2008/03/msg00166.html

Testers are needed so that we can merge that in time for lenny.

Cheers,
-- 
Raphaël Hertzog

Le best-seller français mis à jour pour Debian Etch :
http://www.ouaza.com/livre/admin-debian/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-03-01 Thread martin f krafft
also sprach Manoj Srivastava [EMAIL PROTECTED] [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.

 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? 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?

Can you try to quantify?

-- 
 .''`.   martin f. krafft [EMAIL PROTECTED]
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems
 
good advice is something a man gives
 when he is too old to set a bad example.
  -- la rouchefoucauld


digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)


Re: How to cope with patches sanely

2008-03-01 Thread Florian Weimer
* martin f. krafft:

 also sprach Manoj Srivastava [EMAIL PROTECTED] [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.

Yes, but that's way it is.  You can't publish all possible combinations
of branches upstream might need.  If you lump some of them together
(either by combining them altogether, or branching one from the other),
upstream won't be able to take them because there are some changes they
don't want.  If you keep them entirely separate, upstream needs to do
some integreation work.  Either way, there is some work left to do.

 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.

The nice thing about Manoj's proposal that we (as in the security
team, for instance) need not care if the Debian maintainer thinks that
upstream needs pristine topic branches, an integration branch, a weave,
or whatever.  We just patch the source and be done with it.  This isn't
a problem as long as we tell upstream to pick patches from unstable
(which they will likely do anyway because that version is much closer to
theirs most of the time).


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-03-01 Thread martin f krafft
also sprach Florian Weimer [EMAIL PROTECTED] [2008.03.01.1334 +0100]:
 The nice thing about Manoj's proposal that we (as in the security
 team, for instance) need not care if the Debian maintainer thinks that
 upstream needs pristine topic branches, an integration branch, a weave,
 or whatever.  We just patch the source and be done with it.  This isn't
 a problem as long as we tell upstream to pick patches from unstable
 (which they will likely do anyway because that version is much closer to
 theirs most of the time).

A quilt series should satisfy those needs as well. If not, please
explain where it falls short.

-- 
 .''`.   martin f. krafft [EMAIL PROTECTED]
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems
 
wahnsinn bei individuen ist selten,
 aber in gruppen, nationen und epochen die regel.
 - friedrich nietzsche


digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)


Re: How to cope with patches sanely

2008-03-01 Thread Florian Weimer
* martin f. krafft:

 also sprach Florian Weimer [EMAIL PROTECTED] [2008.03.01.1334 +0100]:
 The nice thing about Manoj's proposal that we (as in the security
 team, for instance) need not care if the Debian maintainer thinks that
 upstream needs pristine topic branches, an integration branch, a weave,
 or whatever.  We just patch the source and be done with it.  This isn't
 a problem as long as we tell upstream to pick patches from unstable
 (which they will likely do anyway because that version is much closer to
 theirs most of the time).

 A quilt series should satisfy those needs as well. If not, please
 explain where it falls short.

It does, if you ship the sources with the series applied.  AFAICT, this
is not what's usually done.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-03-01 Thread martin f krafft
also sprach Florian Weimer [EMAIL PROTECTED] [2008.03.01.1650 +0100]:
 It does, if you ship the sources with the series applied.  AFAICT, this
 is not what's usually done.

... or if the patches were automatically applied when the source is
unpacked, which is where I think we're heading.

-- 
 .''`.   martin f. krafft [EMAIL PROTECTED]
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems
 
you can't assign IP address 127.0.0.1 to the loopback adapter,
because it is a reserved address for loopback devices.
  -- micro$oft windoze xp professional


digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)


Re: How to cope with patches sanely

2008-03-01 Thread Manoj Srivastava
On Sat, 1 Mar 2008 14:16:20 +0100, martin f krafft [EMAIL PROTECTED] said: 

 also sprach Florian Weimer [EMAIL PROTECTED] [2008.03.01.1334 +0100]:
 The nice thing about Manoj's proposal that we (as in the security
 team, for instance) need not care if the Debian maintainer thinks
 that upstream needs pristine topic branches, an integration branch, a
 weave, or whatever.  We just patch the source and be done with it.
 This isn't a problem as long as we tell upstream to pick patches from
 unstable (which they will likely do anyway because that version is
 much closer to theirs most of the time).

 A quilt series should satisfy those needs as well. If not, please
 explain where it falls short.

A quilt series is hard to generate from my setup; branch diffs
 are not.  A quilt series only becomes viable as an exclusive source
 package format if it can be created in all cases; forcing people to
 abandon all their work flows and migrate to quilt is a non-starter.

If we are not talking about exclusively using quilt, then I do
 not understand your question -- sure, some people use quilt. Some of us
 do not. Unless there is a way to generate a quilt series for the rest
 of us easily, we are not going to have quilt in all source packages.

Why is this so hard to understand?

manoj
-- 
Time is an illusion perpetrated by the manufacturers of space.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-03-01 Thread Manoj Srivastava
On Sat, 1 Mar 2008 12:21:03 +0100, martin f krafft [EMAIL PROTECTED] said: 

 also sprach Manoj Srivastava [EMAIL PROTECTED] [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,
 t.

Now, 

Re: How to cope with patches sanely

2008-03-01 Thread Manoj Srivastava
On Sat, 1 Mar 2008 17:24:49 +0100, martin f krafft [EMAIL PROTECTED] said: 

 also sprach Florian Weimer [EMAIL PROTECTED] [2008.03.01.1650 +0100]:
 It does, if you ship the sources with the series applied.  AFAICT,
 this is not what's usually done.

 ... or if the patches were automatically applied when the source is
 unpacked, which is where I think we're heading.

Why do we have to settle on a quilt based source package, when
 my proposal meets all the requirements anyway? Why does it have to be
 one or the other?

Why is the requirement not just:
 a) on dpkg-source -x; you get what you need to compile and build the
package
 b) The monolithic diff.gz has additional information provided that
shows the user the different lines of development that have been
integrated into the Debian package
 c) This additional information should not need knowledge of an SCM or
network access

And let people figure out on their own how to make this happen?
 (Like, perhaps, teaching dpkg about the top few stacked patch
 mechanisms).

Why standardize on tools instead of specifying results? Methinks
 that useless conformity comes close to foolish consistency, and I am
 opposed to hobgoblins.

manoj
-- 
Operator, please trace this call and tell me where I am.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-03-01 Thread Raphael Hertzog
On Sat, 01 Mar 2008, Manoj Srivastava wrote:
 Why do we have to settle on a quilt based source package, when
  my proposal meets all the requirements anyway? Why does it have to be
  one or the other?

It's not going to be one or the other. Note that your changes on upstream
code can be a single diff in a quilt serie anyway.

The way to store patches has no relation with the way you construct your
patches. :)

Cheers,
-- 
Raphaël Hertzog

Le best-seller français mis à jour pour Debian Etch :
http://www.ouaza.com/livre/admin-debian/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-03-01 Thread Manoj Srivastava
Hi,

For people who are trying to figure out what my merging and
 branching workflow looks like, I have uploaded a recent picture for
 fvwm at:
http://people.debian.org/~srivasta/fvwm.png

I should warn you that this is a large image; and is known to
 crash iceweasel. I suggest downloading it and using gqview, and go to
 the 1:1 zoom, and pan around.

Having done that, ask yourself if you really want to write a
 script that trolls through such a branch and merge history to
 automatically generate a stacked patch series.

manoj
-- 
Four be the things I'd have been better without: love, curiosity,
freckles and doubt.  -- Dorothy Parker
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-03-01 Thread Colin Watson
On Fri, Feb 29, 2008 at 09:30:16PM +0100, Florian Weimer wrote:
 * Ben Finney:
  It's no security risk to unpack a tarball, apply a patch to it via GNU
  'patch', and examine the result.
 
 History should tell you that this is not true. 8-) I can even understand
 people who state that GNU tar should never be used to uncompress
 tarballs from untrusted sources, and we therefore do not need to provide
 security support for it, but this is going a bit too far for my taste.
 
 But my point really is: Please do do not use potential security issues
 as arguments.  The overall situation is sufficiently bad that this can
 be used to prove *anything*.

I think the difference between the occasional vulnerability in GNU tar
and a system that is designed to operate by executing arbitrary
marginally-trusted code is, erm, rather significant.

-- 
Colin Watson   [EMAIL PROTECTED]


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Let's kill this part of the discussion right away [was: Re: How to cope with patches sanely]

2008-02-29 Thread Sam Vilain
Manoj Srivastava wrote:
 And no, I can do this using plain old arch, and I don't really
  have to change my SCM.
 But not all Debian maintainers are using git;
 Version control systems that have content-addressable filesystems
 (essentially, git and Monotone) are inherently efficient to
 distribute; [...]
 Which is great, but I fear it will not fly as a the one and
   only

Ok, I apologise for leaving my note to this effect to the end of my
e-mail.  But let me repeat.

I'm not asking that you change the SCM that you use.

I'll say it again, this time for the other subscribers.

I'm NOT asking that you change the SCM that you use or the way that you
work.

All I'm talking about is using git as a replacement for the *source
archive* format.  How the files are archived and distributed.  There are
compelling reasons to want to do this; not least getting around the fact
that shipping patch series in .diff.gz doesn't handle cases like
integration branches without adding a new patch format (which is also
something I think is probably useful, and a complementary approach).

Thanks for the rest of your e-mail, which contains constructive feedback
which I will now digest and respond to!

Cheers,
Sam.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-29 Thread Florian Weimer
* Ben Finney:

 It's no security risk to unpack a tarball, apply a patch to it via GNU
 'patch', and examine the result.

History should tell you that this is not true. 8-) I can even understand
people who state that GNU tar should never be used to uncompress
tarballs from untrusted sources, and we therefore do not need to provide
security support for it, but this is going a bit too far for my taste.

But my point really is: Please do do not use potential security issues
as arguments.  The overall situation is sufficiently bad that this can
be used to prove *anything*.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-29 Thread Florian Weimer
* Manoj Srivastava:

 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.  As
  each feature branch was created or developed, if there were any
  conflicts, these conflicts were resolved in the integration branch. And
  the integration branch does not keep track of what changes come from
  which branch -- that is not its job. And it does not keep the
  integration patches up to date either -- that again is not its
  job. Details below.

There are some systems that automatically push changes on a branch to
all branches that branched from it (Clearcase is in that category, IIRC,
and Aegis does something similar).  My experience with Aegis is that
this is usually *not* what you want, and the prevalent DVCS model
uniformly rejects this idea.  However, this would help to get rid of the
integration branch.  Changes to lower branches would bubble up, if
necessary with manual help, and a separate integration branch would not
be necessary.  I'm not sure if this is actually workable (probably not
with the branching model currently in fashion), but it might be.

Anyway, this gets me back to my original question: Is there tools
support for dealing with patch series (quilt or dpatch) which lets me
bubble up patches (including new upstream versions, at least
conceptually) and sink them down the queue?  With three-way merging, so
that it's comparable to typical in-VCS operation?

Has anybody written the converse to git-quiltimport (which should go to
great lengths not to create any gratuitous changes), and a port of that
script to dpatch?


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-29 Thread Manoj Srivastava
On Sat, Jan 26, 2008 at 11:39:32PM +0100, Pierre Habouzit wrote:
 
 Another thing is that people have the old habit to see the source
 package be the preferred form of modification for a Debian package.

Hmm. This started off a train of thought. In one sense, one
 could see the source code for the binary package as the sources
 delivered by applying the diff.gz to the upstream tarball, and the rest
 merely tools to deliver the sources, somewhat like editors. I don't
 want to go down that debate, since the binary blob people would jump in
 and claim that the hardware editors creating the binary blobs are,
 ummm, editors.

David Nusinow has criticized my methodology as delivering a
 mostly opaque diff.gz; and I have been thinking about that too. The
 criticism has merit; and I allowed myself to get distracted by the
 whole quilt subthread, which was a red herring. quilt introduces
 linearlization of patches, etc, and ordering, which were merely
 distractions.


But the comment above by Pierre got me thinking: when someone
 reports a bug in my package, and I fix it, or when I add a whole new
 feature; I do not do it on the integration branch.  I do it on a new
 branch, dedicated to that series of fixes or the new feature, and the
 goal of the branch is to maintain a clean topic patch to feed
 upstream. I then post the same fix into the integration branch, easily
 done. So the modifications are being made in a topic branch -- but
 then, I ship only the integration branch (which is what the diff.gz
 represents) in the source package.

So, in a very real sense, I do not ship the branch where I
 prefer to make the changes.

Now, David had a point that people who need to make changes need
 to understand how to take the diff.gz apart, and understand what parts
 of the diff.gz correspond to which logical line of development.  This
 annotation of the diff lies in the topic branches; the integration
 branch has elided the annotation, in one sense. So, by only shipping
 the integration branch (as a diff.gz), I am eliding information that is
 present in my SCM, and not presenting that to the end user. This is not
 a good thing.

Then it struck me: why not present the end users with the same
 environment and history that I have when I make changes? So, here are
 the goals of my proposal:

  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.

Now, a lot of what I need is already present.
 1) the orig.tar.gz represents the upstream branch, exactly.
 2) the diff.gz + orig.tar.gz represents the integration branch,
exactly.

So the missing thing is the topic branches.
  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.

Any end user who wishes to modify Topic branch C can, then,
 modify the topic branch, and apply the same delta to the integration
 branch, and they have done the same thing that I would do with the
 patch. In other words, they have the same work flow, and preferred
 means of modification, even if they do not know my SCM.

People who do not care about independent lines of development
 can just ignore ./debian/branches, since that directory is never used
 in building, and is for human consumption.

The downside, of course, is shipping the same patch twice, once
 in the diff.gz, and once in ./debian/branches/*.diff.gz.

Comments welcome.

manoj
-- 
Laugh while you can, monkey-boy. Dr. Emilio Lizardo
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-29 Thread Florian Weimer
* Manoj Srivastava:

 Now, a lot of what I need is already present.
  1) the orig.tar.gz represents the upstream branch, exactly.
  2) the diff.gz + orig.tar.gz represents the integration branch,
 exactly.

 So the missing thing is the topic branches.
   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.

I like it a lot.  It's somewhat debatable how to deal with divergence
between the sume of topic branches and the integration branch/real
source package contents, but that's something the package maintainers
can be tasked with.  What's particularly charming about this scheme is
that such discrepancies do not impact repeatable builds.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-28 Thread Sam Vilain
Manoj Srivastava wrote:
 Feature branches don't magically allow you to avoid merge conflicts
 either, so this is a red herring. Once you've resolved the conflict,
 then it becomes just another change. This change can become a diff in
 a stack of diffs.
 
 This whole message is a red herring, since hte feature branches
  do not attempt to handle merge conflicts -- that is not their purpose.
  They capture one single feature, independently from every other
  feature, and thumb their collective noses at merge conflicts.

Yes.  Feature branches are effectively forking a particular version of a
project - this is not a problem, and is essential for efficient
development.  People jumbling together changes in trunk branches is
perhaps one of the worst upshots of the 2002-2006 or so obsession with
poorly designed centralised systems and in my opinion sank many projects.

 The history of the integration branch captures the integration
   effort; and the integration branch makes no effort to keep the
 integration work up to date with current upstream and feature
 branches. 

Initially perhaps.  However, once a feature is considered ready for
inclusion, it is important that it contains merges FROM the branch they
are targetting.  They mean that a later merge back the other way, to
merge the feature branch into the target branch, can happen painlessly.
 ASSUMING that you're using a system which has commutative merge
characteristics, such as git or mercurial.

 If you think you can extract an up to date integration patch
  from the entrails of the integration branch -- feel free o smack
  me down.  But please provide some substance to the assertion that it is
  doable.

Perhaps I missed the context to this discussion - certainly expressing a
history containing merge nodes in patches is non-trivial and can't be
done with standard patch format - but I believe that this is certainly
possible.

Can you express this problem with reference to a particular history of
an integration branch?  I will provide some short git commands to
extract the information in the form you are after.

Sam


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-28 Thread Manoj Srivastava
On Fri, 29 Feb 2008 12:35:30 +1300, Sam Vilain [EMAIL PROTECTED] said: 

 Manoj Srivastava wrote:
 Feature branches don't magically allow you to avoid merge conflicts
 either, so this is a red herring. Once you've resolved the conflict,
 then it becomes just another change. This change can become a diff
 in a stack of diffs.
 
 This whole message is a red herring, since hte feature branches do
 not attempt to handle merge conflicts -- that is not their purpose.
 They capture one single feature, independently from every other
 feature, and thumb their collective noses at merge conflicts.

 Yes.  Feature branches are effectively forking a particular version of
 a project - this is not a problem, and is essential for efficient
 development.  People jumbling together changes in trunk branches is
 perhaps one of the worst upshots of the 2002-2006 or so obsession with
 poorly designed centralised systems and in my opinion sank many
 projects.

Err. If you go back and read this thread in the archive, You'll
 note that I have stated that my feature branches are always kept up to
 date with the latest upstream branch I am basing my Debian package
 on. 

When I have been creating patches for inclusion with upstream, I
 essentially feed them the source patch and a changelog entry --
 essentially, creating a single patch series; squashing the underlying
 history.  Most upstream do not care about the messy history of my
 development; and most do not grok arch well enough to pull directly.

I am not sure what the relevance of trunk changes you mention
 has to the current thread.

 The history of the integration branch captures the integration
 effort; and the integration branch makes no effort to keep the
 integration work up to date with current upstream and feature
 branches.

 Initially perhaps.  However, once a feature is considered ready for
 inclusion, it is important that it contains merges FROM the branch
 they are targetting.

Please do read the thread history.  The feature branches being
 kept updated with the upstream branch means that my feature branches
 _always_ apply to the current upstream.

 They mean that a later merge back the other way, to merge the feature
 branch into the target branch, can happen painlessly.  ASSUMING that
 you're using a system which has commutative merge characteristics,
 such as git or mercurial.

I use Arch.

 If you think you can extract an up to date integration patch from the
 entrails of the integration branch -- feel free o smack me down.  But
 please provide some substance to the assertion that it is doable.

 Perhaps I missed the context to this discussion - certainly expressing

I think you have.

 a history containing merge nodes in patches is non-trivial and can't
 be done with standard patch format - but I believe that this is
 certainly possible.

Great. Show me the code. My arch repo is publicly available on
 arch.debian.org.   As they say in Missouri, Show me.

 Can you express this problem with reference to a particular history of
 an integration branch?  I will provide some short git commands to
 extract the information in the form you are after.

 http://arch.debian.org/cgi-bin/archzoom.cgi/[EMAIL PROTECTED]

Take any package. Say, flex. Or flex-old. You have all my
 feature branches there. The --devo branch is the integration branch.
 Please show me an automated way you can grab the feature branches and
 generate a quilt series that gives you the devo branch.  The diff.gz is
 how we get from upstream to the devo branch (modulo ./debian); if you
 can break that down nicely for the folks who want each feature
 separate, that would work as well.

If you code works well enough every single time a new upstream
 comes around and I release a new version of flex or whatever,  I'll
 throw in the generated quilt patches.

Until then, could people stop telling me how easy it is to
 automatically generate quilt series for my packages, and that I should
 jut shut up and code it and not stand in the way of other people trying
 to make such quilt series generation the standard way of doing source
 packages?

BTW, I have heard no one comment on my offer to generate a pure
 patch for each feature branch, with no warranty that the patches can be
 applied linearly, along with the diff.gz that defines the integration
 branch, so that a human can probably tell what most of the changes mean
 (which is what people seemed to be after with neatly separated out
 patches).

manoj
 who does not think that one can go easily from a set of independent
 pure feature patches that separately apply to upstream to a quilt
 series programmatically
-- 
Did I do an INCORRECT THING??
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. 

Re: How to cope with patches sanely

2008-02-28 Thread Sam Vilain
Manoj Srivastava wrote:
 Yes.  Feature branches are effectively forking a particular version of
 a project - this is not a problem, and is essential for efficient
 development.  People jumbling together changes in trunk branches is
 perhaps one of the worst upshots of the 2002-2006 or so obsession with
 poorly designed centralised systems and in my opinion sank many
 projects.
 
 Err. If you go back and read this thread in the archive, You'll
  note that I have stated that my feature branches are always kept up to
  date with the latest upstream branch I am basing my Debian package
  on. 

This technique is also called rebasing the patch set; it's fine, but
it's just one approach.

 When I have been creating patches for inclusion with upstream, I
  essentially feed them the source patch and a changelog entry --
  essentially, creating a single patch series; squashing the underlying
  history.  Most upstream do not care about the messy history of my
  development; and most do not grok arch well enough to pull directly.

This is sometimes worthwhile and sometimes a bad idea.  The driving
motive, if you want to aim for patches to be easily reviewed, is that
each patch should introduce a single change, which is well explained.  I
agree that the upstream will not want a messy history; which is why you
reshape the individual changes using a tool such as Quilt, Stacked Git,
Guilt, Mercurial Queues, etc, so that they are more easily reviewed.

 They mean that a later merge back the other way, to merge the feature
 branch into the target branch, can happen painlessly.  ASSUMING that
 you're using a system which has commutative merge characteristics,
 such as git or mercurial.
 
 I use Arch.

Arch is critically deficient in this respect; it doesn't really have a
concept of tracking branches, and merging is not commutative; if you
merge a branch that just merged from your branch, an unnecessary new
changeset is made.  But if you are rebasing then you don't need to worry
about that.  As I said, it's just more work.

 Can you express this problem with reference to a particular history of
 an integration branch?  I will provide some short git commands to
 extract the information in the form you are after.
 
  http://arch.debian.org/cgi-bin/archzoom.cgi/[EMAIL PROTECTED]
 
 Take any package. Say, flex. Or flex-old. You have all my
  feature branches there. The --devo branch is the integration branch.
  Please show me an automated way you can grab the feature branches and
  generate a quilt series that gives you the devo branch.  The diff.gz is
  how we get from upstream to the devo branch (modulo ./debian); if you
  can break that down nicely for the folks who want each feature
  separate, that would work as well.

Thanks for restating the problem clearly.  While the underlying problem
is easily approached and I would still call it trivial, the details of
what you are asking for make it impossible - because quilt series cannot
contain merges (someone correct me here if it can and I can go forward).

Shipping changes for upstream inclusion as a *single* set of quilt
patches is not possible if you are including merges, but if you allow
the patches to be grouped, and introduce a new type of patch which
encapsulates a merge (gitk has one example of this; it uses different
identifiers to represent which file's lines are included), then it can
be done.  The apply-patches script would need extending to support this,
but I don't think that's particularly show-stopping.

However, ignoring the merges, so far we're not that far away from the
script being 'git-log -p' or 'git format-patch upstreamrev'

Also having never really used arch, if you can provide me with the
commands to get a copy of those branches (the man page is sadly not very
forthcoming), and I'll give the git-archimport script a whorl and see if
I can get it imported and show how this can work in practice.  If
someone with git-archimport experience can perform this and publish the
repositories somewhere, I'd be very grateful.

  If you code works well enough every single time a new upstream
 comes around and I release a new version of flex or whatever,  I'll
 throw in the generated quilt patches.

I think what is required is a rethink of the problem.  What is being
tried to be achieved, and are there any other ways to achieve it which
will solve the problem in a vastly more effective way.

Version control systems that have content-addressable filesystems
(essentially, git and Monotone) are inherently efficient to distribute;
as only the changes between versions need be distributed.  The notion of
stream compressing tarballs is archaic compared with being able to
search for deltas anywhere in the source tree.

You can see this in effect with git, which is capable of very quickly
identifying which objects are new, and sending them all in impressively
small packs on the network.  It's amazing how many tarballs will then
fit into the 

Re: How to cope with patches sanely

2008-02-28 Thread Manoj Srivastava
On Fri, 29 Feb 2008 16:11:48 +1300, Sam Vilain [EMAIL PROTECTED] said: 

 Manoj Srivastava wrote:
 Yes.  Feature branches are effectively forking a particular version
 of a project - this is not a problem, and is essential for efficient
 development.  People jumbling together changes in trunk branches
 is perhaps one of the worst upshots of the 2002-2006 or so obsession
 with poorly designed centralised systems and in my opinion sank many
 projects.
 
 Err. If you go back and read this thread in the archive, You'll note
 that I have stated that my feature branches are always kept up to
 date with the latest upstream branch I am basing my Debian package
 on.

 This technique is also called rebasing the patch set; it's fine, but
 it's just one approach.

Actually, that is not it. I am not rebasing -- I am doing
 repeated merges. Arch does not rebase -- it just applies  the upstream
 delta, with full history. This allows me to replay into the integration
 branch at will.

 When I have been creating patches for inclusion with upstream, I
 essentially feed them the source patch and a changelog entry --
 essentially, creating a single patch series; squashing the underlying
 history.  Most upstream do not care about the messy history of my
 development; and most do not grok arch well enough to pull directly.

 This is sometimes worthwhile and sometimes a bad idea.  The driving
 motive, if you want to aim for patches to be easily reviewed, is that
 each patch should introduce a single change, which is well explained.
 I agree that the upstream will not want a messy history; which is why
 you reshape the individual changes using a tool such as Quilt, Stacked
 Git, Guilt, Mercurial Queues, etc, so that they are more easily
 reviewed.

I can do this by cherry picking the chnages from my topic
 branch, and feeding it separately. Emacs and diff mode makes it easy to
 split off chunks if I want to do it after the fact from the squashed
 diff; or I can regenerate changesets and cherry pick the series.

And no, I can do this using plain old arch, and I don't really
 have to change my SCM.


 They mean that a later merge back the other way, to merge the
 feature branch into the target branch, can happen painlessly.
 ASSUMING that you're using a system which has commutative merge
 characteristics, such as git or mercurial.
 
 I use Arch.

 Arch is critically deficient in this respect; it doesn't really have a
 concept of tracking branches, and merging is not commutative; if you
 merge a branch that just merged from your branch, an unnecessary new
 changeset is made.  But if you are rebasing then you don't need to
 worry about that.  As I said, it's just more work.

Which is why we have sync-tree. Yes, I have to keep track myself
 of which delta I am  currently merging; and only apply a merge once
 into each branch; and immedately syn-tree with the other branches.

And since it is all in one fully automated script, called
 arch_upgrade, that takes any new upstream, updates all my topic branches
 and my integration branch automatically, I don't see this as much more
 work. 

Indeed, I have yet to see any porcelain that makes merging  a
 new upstream commit into all my topic branches and the integration
 branch as a single operation, I suspect that it is more work in git; at
 least until I can replicate my arch scaffolding for the git porcelain. 

 Can you express this problem with reference to a particular history
 of an integration branch?  I will provide some short git commands to
 extract the information in the form you are after.
 
 http://arch.debian.org/cgi-bin/archzoom.cgi/[EMAIL PROTECTED] 
 Take any package. Say, flex. Or flex-old. You have all my feature
 branches there. The --devo branch is the integration branch.  Please
 show me an automated way you can grab the feature branches and
 generate a quilt series that gives you the devo branch.  The diff.gz
 is how we get from upstream to the devo branch (modulo ./debian); if
 you can break that down nicely for the folks who want each feature
 separate, that would work as well.

 Thanks for restating the problem clearly.  While the underlying
 problem is easily approached and I would still call it trivial, the
 details of what you are asking for make it impossible - because quilt
 series cannot contain merges (someone correct me here if it can and I
 can go forward).

I don't use quilt, so I am not the one to answer this.

 Shipping changes for upstream inclusion as a *single* set of quilt
 patches is not possible if you are including merges, but if you allow
 the patches to be grouped, and introduce a new type of patch which
 encapsulates a merge (gitk has one example of this; it uses different
 identifiers to represent which file's lines are included), then it can
 be done.  The apply-patches script would need extending to support
 this, but I don't think that's particularly show-stopping.


Great. This 

Re: How to cope with patches sanely

2008-02-26 Thread Manoj Srivastava
On Mon, 25 Feb 2008 19:11:16 -0500, David Nusinow [EMAIL PROTECTED] 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
 [EMAIL PROTECTED] said:
 
  Manoj Srivastava [EMAIL PROTECTED] writes:
  David Nusinow [EMAIL PROTECTED] 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.

manoj

-- 
#else /* !STDSTDIO */ /* The big, slow, and stupid way */ --Larry Wall
#in str.c from the perl source code
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-26 Thread Manoj Srivastava
On Mon, 25 Feb 2008 19:04:10 -0500, David Nusinow [EMAIL PROTECTED] said: 

 On Mon, Feb 25, 2008 at 03:56:49AM -0600, Manoj Srivastava wrote:
 No, it does not. If branch A has pi = 2.34567; and branch B has pi =
 3.14159;
 
 No matter how much quilting you do you cannot reconcile the
 fundamental conflict in the final. Either pi is 3.14159; or it is
 not; and if branch A requires pi not to be that value, and branch B
 requires pi to be that value, quilt can't make C be quantum like and
 have the value be both.

 Feature branches don't magically allow you to avoid merge conflicts
 either, so this is a red herring. Once you've resolved the conflict,
 then it becomes just another change. This change can become a diff in
 a stack of diffs.

This whole message is a red herring, since hte feature branches
 do not attempt to handle merge conflicts -- that is not their purpose.
 They capture one single feature, independently from every other
 feature, and thumb their collective noses at merge conflicts.

The history of the integration branch captures the integration
  effort; and the integration branch makes no effort to keep the
integration work up to date with current upstream and feature
branches. 

If you think you can extract an up to date integration patch
 from the entrails of the integration branch -- feel free o smack
 me down.  But please provide some substance to the assertion that it is
 doable.

manoj
-- 
One friend in a lifetime is much; two are many; three are hardly
possible. Henry Adams
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-25 Thread martin f krafft
also sprach Manoj Srivastava [EMAIL PROTECTED] [2008.02.25.0828 +0100]:
 I am not opposed to it. If you can somehow magically create a
  tool that can linearize the feature branches, more power to you. I
  personally find the prospect highly unlikely; and I would like to see
  some code, please, before I grant that such a thing is possible.

The tool I envision would simply surf through the history of the
integration branch and identify merge commits. Each merge would
become a patch in the quilt series.

 Sure. You can't integrate two features that fundamentally
  conflict with each other. No amount of smoke and mirrors can obscure
  that fundamental obstacle. This is independent of the tool set you
  use. 

Except that quilt provides the necessary glue to handle it, while
feature branches don't.

-- 
 .''`.   martin f. krafft [EMAIL PROTECTED]
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems
 
echo '[dO%O+38%O+PO/d00]Fi22os0CC4BA64E418CE7l0xAP' | dc


digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)


Re: How to cope with patches sanely

2008-02-25 Thread Pierre Habouzit
On Mon, Feb 25, 2008 at 03:37:07AM +, Manoj Srivastava wrote:
 On Sun, 24 Feb 2008 21:17:10 -0500, David Nusinow [EMAIL PROTECTED] said: 
 
  On Sun, Feb 24, 2008 at 06:08:17PM -0800, Russ Allbery wrote:
  David Nusinow [EMAIL PROTECTED] writes:
  
   The problem is that you and Manoj assume that this is the only way
   to do things. I don't believe this. Pierre Habouzit has been
   experimenting with an alternative method of feature branches that
   exports to a linear stack of diffs just fine. Just because Manoj is
   doing something one way right now doesn't mean it's the only or
   even the correct way to do it.
 
 I would be interested in details of this, and whether this
  approach works with pure feature branches where the features are being
  developed contemporaneously with each other an upstream development;
  and thus the branches overlap both temporally and in code space.

  I'm planning to write a textual version of what I demonstrated at
FOSDEM, with some more ideas that I had talking with Julien Cristau on
the grass after.

  You developped them contemporaneously, okay, but in the end you merge
them one after the other. If you're doing criss-cross merges, well, I
can nothing for you, and you're creating really messy histories, and
yes, you need an SCM to represent that in a satisfying way.

  But if you really merge one feature branch on top of the other, and
it's in my experience *way enough* for what we need in Debian packaging,
then multiple branches are just multiple series to be applied in a
specific relative order.

  The problem is, I believe that there are two kind of things: patches
that you backport from upstream. If you're lucky enough to have an
upstream using git, it's just a matter of merging the stable branch into
yours, or cherry-picking some patches, which will not create conflicts
when you merge back. This goes in the .diff.gz, and it's okay (at least
I think so) because it's patches that _everyone_ can take from upstream
as well. You don't need to make them special, and it's always possible
to generate some kind of flat file to say, okay, I cherry-picked this
patch this patch and this patch from upstream, or merged up to this
point of this upstream branch. This information is more useful than the
patch series for derived distros, or co-maints.

  When it comes to specific patches of yours, I really believe that
topic branches like you advertise them are the best answer. Git makes
merging easy (s/Git/reasonnable $DSCM/ for this matter btw) in the sense
that merging is fast enough, and easy enough when the branches you merge
have not diverged too much. I mean, no matter which SCM you use, merging
from a branch that is _very_ old, and still not merged upstream is jut a
pain. And it's again not an SCM issue. A patch queue _is_ a branch in
itself. Really. There are two ways to look at that. Either you say, I
always want to remember I started from this point, and then you merge
and merge and merge, and your history looks like that:

R are uptream releases, M your repeated merges to keep the feature
branch current.

-o---o---o--[...]--R--[...]--R--[...]--o--
  \\ \
   p--p--p--p---M-M...[feature branch]

  Well with this approach, upstream will have to take a messy history
with a _lot_ of merge points they don't care about, and won't be able to
try your feature branch on top of their current work and maybe
eventually adopt it. And worse, if you have to add new patches along the
way, you get an history with a mixed suite of patches and merges, which
is unreadable to upstream.

  The other way is to forget about giving depth *in* the SCM to the
patches history. Because it's what it's about. What you really want
IMSHO is: I have this patch queue [pq] and at upstream R0 it was in
state pq0, in upstream R1 it was in state pq1 and so on. Without any
useless merge points in it. This way your feature branch is a free (as
in only attached to history by its base) branch that you rewrite for
each new upstream, serialize under debian/patches/featurebranch. In
git, there is this awesome git-quiltimport command that allow you to
rebuild a branch from a quilt series in a trivial way. If you want to
work on the patch queue, you just need to make it a branch again, do
your stuff, serialize it again, and you're done.

  While doing that, your workflow allow people to do meaningful changes
to your package (by adding patches to a given queue), that you'll
transparently *painlessly* import into your workflow. Whereas with your
current one, you'll have to extract whatever the NMUer did that is a
flat debdiff, and split it. It's horrible for you, don't please pretend
otherwise, I won't believe you. The other gain, is that upstream can
look at a current, unencumbered patch queue about the feature you added,
and can take a decent decision about the fact that it's good to take
upstream or not, and it's trivial to export such a branch to upstream:

  

Re: How to cope with patches sanely

2008-02-25 Thread Manoj Srivastava
On Mon, 25 Feb 2008 09:35:13 +0100, martin f krafft [EMAIL PROTECTED] said: 

 also sprach Manoj Srivastava [EMAIL PROTECTED] [2008.02.25.0828
 +0100]:
 I am not opposed to it. If you can somehow magically create a tool
 that can linearize the feature branches, more power to you. I
 personally find the prospect highly unlikely; and I would like to see
 some code, please, before I grant that such a thing is possible.

 The tool I envision would simply surf through the history of the
 integration branch and identify merge commits. Each merge would become
 a patch in the quilt series.

How are you planning on doing this identification? Looking at
 the arch logs, it is not trivial to identify merge commits and the
 upgrade patches (which are just merges from the upstream branch),
 unless you start with an ancient version (like, from my 2003 repo) and
 then apply every single commit to the integration branch over the last
 five years (with really really huge numbers of patches).

You'll have to track repo changes, figure out how to overcome
 sealed branch boundaries, etc.

I am not sure I believe this to be feasible until I see some
 code. 

 Sure. You can't integrate two features that fundamentally conflict
 with each other. No amount of smoke and mirrors can obscure that
 fundamental obstacle. This is independent of the tool set you use.

 Except that quilt provides the necessary glue to handle it, while
 feature branches don't.

No, it does not. If branch A has
 pi = 2.34567;
   and branch B has
 pi = 3.14159;

No matter how much quilting you do you cannot reconcile the
 fundamental conflict in the final. Either pi is 3.14159; or it is not;
 and if branch A requires pi not to be that value, and branch B requires
 pi to be that value, quilt can't make C be quantum like and have the
 value be both.

manoj
-- 
Griffin's Thought: When you starve with a tiger, the tiger starves last.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-25 Thread Manoj Srivastava
On Mon, 25 Feb 2008 10:33:48 +0100, Pierre Habouzit [EMAIL PROTECTED] said: 

 On Mon, Feb 25, 2008 at 03:37:07AM +, Manoj Srivastava wrote:
 On Sun, 24 Feb 2008 21:17:10 -0500, David Nusinow
 [EMAIL PROTECTED] said:
 
  On Sun, Feb 24, 2008 at 06:08:17PM -0800, Russ Allbery wrote:
  David Nusinow [EMAIL PROTECTED] writes:
  
   The problem is that you and Manoj assume that this is the only
   way to do things. I don't believe this. Pierre Habouzit has been
   experimenting with an alternative method of feature branches
   that exports to a linear stack of diffs just fine. Just because
   Manoj is doing something one way right now doesn't mean it's the
   only or even the correct way to do it.
 
 I would be interested in details of this, and whether this approach
 works with pure feature branches where the features are being
 developed contemporaneously with each other an upstream development;
 and thus the branches overlap both temporally and in code space.

   I'm planning to write a textual version of what I demonstrated at
 FOSDEM, with some more ideas that I had talking with Julien Cristau on
 the grass after.

   You developped them contemporaneously, okay, but in the end you
 merge them one after the other.

No, I do not. I developed feature A a bit, merged that. Then I
 developed feature B a bit, and merged that. Then I developed feature A
 some more. The there came an upstream version. Then feature B ...

 If you're doing criss-cross merges, well, I can nothing for you, and
 you're creating really messy histories, and yes, you need an SCM to
 represent that in a satisfying way.

Thanks. So most of my packages will not get any help from the
 tool you are talking about -- and thus, it can't be made into a policy
 requirement.

 But if you really merge one feature branch on top of the other, and
 it's in my experience *way enough* for what we need in Debian
 packaging, then multiple branches are just multiple series to be
 applied in a specific relative order.

But that is not how development happens in long running sets of
 features, which have been under development, incrementally, over a
 large number of upstream versions.


   When it comes to specific patches of yours, I really believe that
 topic branches like you advertise them are the best answer. Git makes
 merging easy (s/Git/reasonnable $DSCM/ for this matter btw) in the
 sense that merging is fast enough, and easy enough when the branches
 you merge have not diverged too much. I mean, no matter which SCM you
 use, merging from a branch that is _very_ old, and still not merged
 upstream is jut a pain.

Depends. I keep the topic branches updated with each upstream
 release, and I have carried fvwm/make/flex patches around for years and
 several upstream upgrades, and not had much problems.  Indeed, most
 upstream upgrades have taken _no_ manual effort.

 And it's again not an SCM issue. A patch queue _is_ a branch in
 itself. Really. There are two ways to look at that. Either you say, I
 always want to remember I started from this point, and then you merge
 and merge and merge, and your history looks like that:

 R are uptream releases, M your repeated merges to keep the feature
 branch current.

 -o---o---o--[...]--R--[...]--R--[...]--o--
   \ \ \
p--p--p--p---M-M...[feature branch]

Right.

 Well with this approach, upstream will have to take a messy history
 with a _lot_ of merge points they don't care about, and won't be able
 to try your feature branch on top of their current work and maybe
 eventually adopt it. And worse, if you have to add new patches along
 the way, you get an history with a mixed suite of patches and merges,
 which is unreadable to upstream.

Heh. Most of my upstream are fed just a patch, since lots of
 them are using CVS.

In Git terms, I always rebase my patch on each upstream version,
 and can then feed a nice, coherent, minimal patch with no real complex
 history.

 The other way is to forget about giving depth *in* the SCM to the
 patches history. Because it's what it's about. What you really want
 IMSHO is: I have this patch queue [pq] and at upstream R0 it was in
 state pq0, in upstream R1 it was in state pq1 and so on. Without any
 useless merge points in it. This way your feature branch is a free (as
 in only attached to history by its base) branch that you rewrite for
 each new upstream, serialize under debian/patches/featurebranch. In
 git, there is this awesome git-quiltimport command that allow you to
 rebuild a branch from a quilt series in a trivial way. If you want to
 work on the patch queue, you just need to make it a branch again, do
 your stuff, serialize it again, and you're done.

Err, I see little benefit in doing that; and I think that I
 prefer my current  feature branch mechanism as being less hassle. I
 periodically build and test each feature branch (this is why having
 ./debian as a submodule is 

Re: How to cope with patches sanely

2008-02-25 Thread Cyril Brulebois
On 25/02/2008, Pierre Habouzit wrote:
   I'm planning to write a textual version of what I demonstrated at
 FOSDEM, with some more ideas that I had talking with Julien Cristau
 on the grass after.

Please, pretty please, include graphics. Be it ASCII art-like
drawings, or gitk screenshots, with some additional arrows and other
comments. Not that I need it, but that would (have been|be) nice.

Cheers,

-- 
Cyril Brulebois


pgpITYEH0ADJu.pgp
Description: PGP signature


Re: How to cope with patches sanely

2008-02-25 Thread Pierre Habouzit
On Mon, Feb 25, 2008 at 04:06:31PM +, Cyril Brulebois wrote:
 On 25/02/2008, Pierre Habouzit wrote:
I'm planning to write a textual version of what I demonstrated at
  FOSDEM, with some more ideas that I had talking with Julien Cristau
  on the grass after.
 
 Please, pretty please, include graphics. Be it ASCII art-like
 drawings, or gitk screenshots, with some additional arrows and other
 comments. Not that I need it, but that would (have been|be) nice.

  That's exactly the plan.


-- 
·O·  Pierre Habouzit
··O[EMAIL PROTECTED]
OOOhttp://www.madism.org


pgpvfCOA8DotC.pgp
Description: PGP signature


Re: How to cope with patches sanely

2008-02-25 Thread David Nusinow
On Mon, Feb 25, 2008 at 03:56:49AM -0600, Manoj Srivastava wrote:
 No, it does not. If branch A has
  pi = 2.34567;
and branch B has
  pi = 3.14159;
 
 No matter how much quilting you do you cannot reconcile the
  fundamental conflict in the final. Either pi is 3.14159; or it is not;
  and if branch A requires pi not to be that value, and branch B requires
  pi to be that value, quilt can't make C be quantum like and have the
  value be both.

Feature branches don't magically allow you to avoid merge conflicts either,
so this is a red herring. Once you've resolved the conflict, then it
becomes just another change. This change can become a diff in a stack of
diffs.

 - David Nusinow


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Raphael Hertzog
On Sun, 24 Feb 2008, Charles Plessy wrote:
 Therefore we did not make progress since the beginning of the
 discussion:

You're trying to make progress somewhere where it's not expected.

 - The most efficient way to deal with changes to the sources for the
   packager is to use his preferred tools.

That should stay as it is.

 - We do not know if the whole concept of breaking up the monolithic diff
   into logical units is something that the persons who often do NMUs in
   Debian are intersted in.

Seperating logical changes has always been useful to understand the
changes and is thus required for any independant reviewer who hasn't
access to the VCS where the changes are reviewable separately.

 - When modifying a package that uses dpatch, quilt or simple-patchsys,
   developpers have to find out by themselves if the target for patching
   the sources is patch, apply-patches or apply-dpatches.

Once the new dpkg-source format is in standard use, those rules disappear
completely... because they are no more needed during build.

Frank Lichtenheld and myself have started hacking on dpkg-source with the
goal to support an extend wigpen and possibly even more. I'd encourage
interested parties to subscribe to debian-dpkg to follow discussions
there.

http://lists.debian.org/debian-dpkg/2008/02/msg00012.html
http://lists.debian.org/debian-dpkg/2008/02/msg00036.html

We're working in the sourcev3 branch of dpkg's git repo. We've only
doing some ground work for now, but we've been doing good progress and I
expect the work on new features to start pretty soon.

http://git.debian.org/?p=dpkg/dpkg.git;a=shortlog;h=sourcev3

(Subscribe to the PTS with cvs keyword and you'll get git commit notice
in live :-))

Cheers,
-- 
Raphaël Hertzog

Le best-seller français mis à jour pour Debian Etch :
http://www.ouaza.com/livre/admin-debian/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely -- Debian New Maintainers'

2008-02-24 Thread Michael Banck
On Sat, Feb 09, 2008 at 10:53:55AM +0100, Patrick Schoenfeld wrote:
 (BTW. there is no need to CC me with your answers, I did not ask for
 that as I am subscribed to the list :-)
 
 On Sat, Feb 09, 2008 at 12:50:46AM +0100, Pierre Habouzit wrote:
quilt is way more powerful to refresh patches when a new upstream
  occurs. It does what it can do best without having mergeing features,
  that only an advanced SCM can provide anyways.
 
 That does mean quilt is able to refresh patches on upstream changes, so
 that with luck the maintainer does not have to refresh the patches for
 changes sources himself? That would be quiet nice, however I still fail
 to see why this is a reason to prefer quilts *format* as an *exchange
 format* if quilt itself is not to be used, which is what you say.

Who said quilt itself is not to be used?  The point of the discussion is
that we agree on a patch-exchange format, without forcing an
implementation on people.  People who like the quilt implementation will
still be able and encouraged to use quilt with it.  Others might just
use vi to edit quilt patches, or git, or something else.


Michael


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Charles Plessy
Le Sun, Feb 24, 2008 at 10:47:05AM +0100, Raphael Hertzog a écrit :
 
  - When modifying a package that uses dpatch, quilt or simple-patchsys,
developpers have to find out by themselves if the target for patching
the sources is patch, apply-patches or apply-dpatches.
 
 Once the new dpkg-source format is in standard use, those rules disappear
 completely... because they are no more needed during build.

I must have missed something. I thought that the new format was to keep
the debian directory in a tar.gz format. With this format, people who
want to modify upstream sources will have to use a patch system. What is
the plan to make the patch targets in debian/rules unneeded?

Have a nice day (and thank you for your work on a new format for source
pacakages.)

-- 
Charles Plessy
http://charles.plessy.org
Wakō, Saitama, Japan


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Guillem Jover
On Sat, 2008-02-23 at 09:08:23 -0600, Manoj Srivastava wrote:
 On Sat, 23 Feb 2008 08:46:03 -0500, David Nusinow [EMAIL PROTECTED] said: 
  This argument assumes that dpkg-source -x will apply that patch stack
  automatically as well, which has been discussed elsewhere.
 
 Currently vapourware, no?

I want to clarify this, as I've seen it mentioned several times on this
thread. dpkg-source supports extracting WigPen since etch. The missing
bit is source package generation (I posted a proof of concept script to
convert quilted source packages to debian-dpkg [0]).

regards,
guillem

[0] http://lists.debian.org/debian-dpkg/2008/02/msg00079.html


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Manoj Srivastava
On Sat, 23 Feb 2008 11:20:55 -0500, David Nusinow [EMAIL PROTECTED] said: 

 On Sat, Feb 23, 2008 at 09:08:23AM -0600, Manoj Srivastava wrote:
 Now, you are trying to make me go towards a mechanism I think is
 inferior (a liner, dependent, and in my opinion, opaque, and somewhat
 shaky linear patch series) as opposed to pure, independent feature
 branches, for benefits I still think are dubious, so expect serious
 push back.  Especially if for every upload I'll have to redo all the
 integration work of the past; ain't gonna happen.
 
 I am not trying to convince you of the error of your ways.  Please
 desist trying to convince me of mine.

 No one, not me, nor anyone else in this thread that I've seen, is
 saying that you should abandon your sytem. What we want is a
 consistent method of dealing with differences from
 upstream. Currently, we have one giant .diff.gz, which people hack
 around either with patch systems or vcs's. If we switch to something
 other than a monolithic .diff.gz on top of a .orig.tar.gz, then we win
 because currently we just have a lot of chaos.

So far, this is OK. The devil, though, lies in the details.

 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.  As
 each feature branch was created or developed, if there were any
 conflicts, these conflicts were resolved in the integration branch. And
 the integration branch does not keep track of what changes come from
 which branch -- that is not its job. And it does not keep the
 integration patches up to date either -- that again is not its
 job. Details below.

There are only Two use cases I care about. A) Feed each pure
 feature to upstream as an up to date patch against current upstream --
 this is what the feature branch does. B) Have an integrated source of
 all features ready to compile for Debian -- and easy to keep updated
 with lates revisions.  This is the task of the integration branch.


 This idea, a linear stack of changes one on top of the other, is the
 commonality between every one of the different means of handling
 changes to upstream, be they maintained by a patch system or a
 vcs. What we want is to stanardize this concept so that our general
 tools like dpkg are aware of it.

This is where we start to differ. More on this below.

 Given what I know about your system, the only change you would have to
 make is that instead of integrating directly in a final branch, you
 generate a diff and throw that along with the diff's name in to
 debian/patches.

I do not think you have thought it through.  Let us try seeing
 how this will not work: Say I have have feature branches A-F.  When
 development happens on branch A that requires some conflict resolution
 on the integration branch, I do the resolution, and fix up the
 integration branch.  The fix applied depends on what order the features
 were merged in -- and this is not something I need to keep track of, so
 I do not.

 As more development happens, and non-overlapping
 changes in the same area occur, the patch would no longer apply.  Other
 feature branches may make changes in the area; and again, make the old
 patch obsolete.

The a new upstream version comes along, and more changes
 happen.  By this time, the old patch will not apply even to
 upstream. Now rinse and repeat -- the patch you blithely threw into
 ./debian/patches is just dead bit by now.

 That's it. It could be totally automated from your
 current setup without much work, if that's what you want.

I don't think this can be automated.  However, if you think you
 can solve the problem, I'll stand down my objections.  Love to see it
 demonstrated first.

Indeed, the only way to redo the information in the integration
 branch is to start with the original upstream, from several years ago,
 determine which feature branch was merged in what order, what order any
 improvements were applied, redo the conflict resolution patches, redo
 the upstream version updates in the correct order, and get to the
 current integration branch.

Heh. Good luck.

 This is not making you give up anything, it's about improving the base
 standard so everyone can get more information without learning a
 zillion different patch systems and vcs's. As a result, we can focus
 on improving the code itself instead of the process of managing the
 code.

 So, in summary, stop trying to act like you're being forced to do
 something that's going to hurt you. No one is taking away your toys.

Words. Lets us see some code, eh?

manoj
-- 
When a man knows no this shore, other shore, or both - such a one, free
from anxiety, 

Re: How to cope with patches sanely

2008-02-24 Thread Ben Finney
Manoj Srivastava [EMAIL PROTECTED] writes:

 David Nusinow [EMAIL PROTECTED] 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?

  And the integration branch does not keep track of what changes come
  from which branch -- that is not its job.

Doesn't each commit message in the integration branch's history state
what merge you were performing at each revision? You've previously
described your workflow as one where you carefully integrate each
feature branch separately into the integration branch. Do your commit
messages in the integration branch not state what individual feature
branch you're merging in?

It seems to me that the analogue to a linear sequence of patches is
the revision history of your integration branch. Granted, this doesn't
give patches against a pristine upstream except from some initial
state.

-- 
 \ Some mornings, it's just not worth chewing through the leather |
  `\  straps.  -- Emo Philips |
_o__)  |
Ben Finney


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Russ Allbery
Ben Finney [EMAIL PROTECTED] writes:
 Manoj Srivastava [EMAIL PROTECTED] writes:

 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?

Yes, but you don't, in the general case, completely develop some feature
on a branch and then merge it only once.  You do some work on one branch,
merge it, do some work on another branch, merge it, do more work on the
first branch and merge it again, import a new upstream and merge it into
all of your branches, do some more work on the feature and merge it
again

I can see Manoj's point.  It's not at all clear to me that there's a
useful linearization of the feature branches after that sort of workflow
has continued for a while.

(I'm now maintaining two of my packages using only Git and feature
branches without any patch system so that I can get some practical
experience with this and understand the workflow better.)

-- 
Russ Allbery ([EMAIL PROTECTED]) http://www.eyrie.org/~eagle/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread David Nusinow
On Sun, Feb 24, 2008 at 05:10:16PM -0800, Russ Allbery wrote:
 Ben Finney [EMAIL PROTECTED] writes:
  Manoj Srivastava [EMAIL PROTECTED] writes:
 
  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?
 
 Yes, but you don't, in the general case, completely develop some feature
 on a branch and then merge it only once.  You do some work on one branch,
 merge it, do some work on another branch, merge it, do more work on the
 first branch and merge it again, import a new upstream and merge it into
 all of your branches, do some more work on the feature and merge it
 again
 
 I can see Manoj's point.  It's not at all clear to me that there's a
 useful linearization of the feature branches after that sort of workflow
 has continued for a while.
 
 (I'm now maintaining two of my packages using only Git and feature
 branches without any patch system so that I can get some practical
 experience with this and understand the workflow better.)

The problem is that you and Manoj assume that this is the only way to do
things. I don't believe this. Pierre Habouzit has been experimenting with
an alternative method of feature branches that exports to a linear stack of
diffs just fine. Just because Manoj is doing something one way right now
doesn't mean it's the only or even the correct way to do it.

 - David Nusinow


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Russ Allbery
David Nusinow [EMAIL PROTECTED] writes:

 The problem is that you and Manoj assume that this is the only way to do
 things. I don't believe this. Pierre Habouzit has been experimenting
 with an alternative method of feature branches that exports to a linear
 stack of diffs just fine. Just because Manoj is doing something one way
 right now doesn't mean it's the only or even the correct way to do it.

Well, I definitely don't think it's the only way to do things, and I've
been one of the people arguing in favor of quilt and exporting to a set of
patches.  :)  But the native Git workflow that people have previously
written up for Debian packages doesn't seem to me to linearize very
easily, and IMO one of the points here was to let maintainers keep using
their native workflows and use the package format for interchange.
Changing the workflow to allow easier export to a particular package
format seems to be going the wrong direction to me.

In other words, I still think a patch-based package format is a good idea
and would be very valuable for a lot of what's in Debian, but I have to
agree with Manoj's point, based on what I've seen so far, that converting
an arbitrary Git or Arch repository for Debian package maintenance to such
a package format isn't necessarily easy.

-- 
Russ Allbery ([EMAIL PROTECTED])   http://www.eyrie.org/~eagle/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread David Nusinow
On Sun, Feb 24, 2008 at 06:08:17PM -0800, Russ Allbery wrote:
 David Nusinow [EMAIL PROTECTED] writes:
 
  The problem is that you and Manoj assume that this is the only way to do
  things. I don't believe this. Pierre Habouzit has been experimenting
  with an alternative method of feature branches that exports to a linear
  stack of diffs just fine. Just because Manoj is doing something one way
  right now doesn't mean it's the only or even the correct way to do it.
 
 Well, I definitely don't think it's the only way to do things, and I've
 been one of the people arguing in favor of quilt and exporting to a set of
 patches.  :)  But the native Git workflow that people have previously
 written up for Debian packages doesn't seem to me to linearize very
 easily, and IMO one of the points here was to let maintainers keep using
 their native workflows and use the package format for interchange.
 Changing the workflow to allow easier export to a particular package
 format seems to be going the wrong direction to me.
 
 In other words, I still think a patch-based package format is a good idea
 and would be very valuable for a lot of what's in Debian, but I have to
 agree with Manoj's point, based on what I've seen so far, that converting
 an arbitrary Git or Arch repository for Debian package maintenance to such
 a package format isn't necessarily easy.

Ok, that's fair. In the worst case then people who want to use this sort of
workflow could stick everything in a giant diff like we do now, so nothing
would be lost.

 - David Nusinow


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Manoj Srivastava
On Mon, 25 Feb 2008 10:34:55 +1100, Ben Finney [EMAIL PROTECTED] said: 

 Manoj Srivastava [EMAIL PROTECTED] writes:
 David Nusinow [EMAIL PROTECTED] 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.



 And the integration branch does not keep track of what changes come
 from which branch -- that is not its job.

 Doesn't each commit message in the integration branch's history state
 what merge you were performing at each revision?

It usually states what changes were made, not necessarily what
 feature branch I imported from.

 You've previously described your workflow as one where you carefully
 integrate each feature branch separately into the integration
 branch.

But not in order, since not all features are developed on the
 same time scale, or even in sequence. And so no, all feature branches
 do not get integrated nicely in separate chunks and for the same
 upstream version either.

 Do your commit messages in the integration branch not state what
 individual feature branch you're merging in?

Not  usually. I describe the changes as it affects the
 integration branch, and sometimes I mention which branch it came from.

 It seems to me that the analogue to a linear sequence of patches is
 the revision history of your integration branch. Granted, this doesn't
 give patches against a pristine upstream except from some initial
 state.

It does not even apply to the current version of upstream. If a
 feature branch was developed over the course of a dozen or so upstream
 versions, and intertwined with development on other feature branches,
 the integration branch might give the sequence of merges, but will not
 give a patch set that applies to any given upstream version, and you'll
 have to retrace the exact sequence of merges and upstream updates -- in
 other words, playing back the whole history of the package.

For make, for instance, the history stretches back over a decade.

manoj
-- 
I never vote for anyone.  I always vote against. W.C. Fields
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Manoj Srivastava
On Sun, 24 Feb 2008 21:17:10 -0500, David Nusinow [EMAIL PROTECTED] said: 

 On Sun, Feb 24, 2008 at 06:08:17PM -0800, Russ Allbery wrote:
 David Nusinow [EMAIL PROTECTED] writes:
 
  The problem is that you and Manoj assume that this is the only way
  to do things. I don't believe this. Pierre Habouzit has been
  experimenting with an alternative method of feature branches that
  exports to a linear stack of diffs just fine. Just because Manoj is
  doing something one way right now doesn't mean it's the only or
  even the correct way to do it.

I would be interested in details of this, and whether this
 approach works with pure feature branches where the features are being
 developed contemporaneously with each other an upstream development;
 and thus the branches overlap both temporally and in code space.

 Well, I definitely don't think it's the only way to do things, and
 I've been one of the people arguing in favor of quilt and exporting
 to a set of patches.  :) But the native Git workflow that people
 have previously written up for Debian packages doesn't seem to me to
 linearize very easily, and IMO one of the points here was to let
 maintainers keep using their native workflows and use the package
 format for interchange.  Changing the workflow to allow easier export
 to a particular package format seems to be going the wrong direction
 to me.
 
 In other words, I still think a patch-based package format is a good
 idea and would be very valuable for a lot of what's in Debian, but I
 have to agree with Manoj's point, based on what I've seen so far,
 that converting an arbitrary Git or Arch repository for Debian
 package maintenance to such a package format isn't necessarily easy.

 Ok, that's fair. In the worst case then people who want to use this
 sort of workflow could stick everything in a giant diff like we do
 now, so nothing would be lost.

Or have dpkg understand not just quilt, but git.

I mean, if we are making dpkg understand quilt-as-a-version-control
 system, why not also have it grok a modern SCM like git? (I know that
 trying to get it to understand arch is a lost cause).

Would joeyh's efforts to get dpkg v3 format be a got repo make a
 difference here?

manoj
-- 
Freedom begins when you tell Mrs. Grundy to go fly a kite.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Manoj Srivastava
Hi,

I think one of the differences that patch series mechanism has
 wrt to new development, either in a feature or upstream, is that it
 requires updates to the integration work doe every single upload. It
 also requires a strict ordering between each feature, making it harder
 to compile and test each feature independently.  It is nice that quilt
 helps keep the integration patch up to date; but this is extra work I
 am glad not to have to do.

An integration branch does the integration once, and does not
 bother to explicitly keep the integration patch updated for every
 upload -- but it does keep each feature branch  up to date, and the
 integration branch has a current set of features. This is reduced work
 load for each change; at the expense of stashing integration knowledge
 deep in the entrails of the integration branch.

I like the reduced work for each upload, and since it satisfies
 the use cases of being able to present upstream with a pure feature
 changeset; to be able to rapidly compare any feature branch against
 each other or upstream, and being able to maintain an integrated source
 tree for Debian packages, I am happy not to keep integration patches up
 to date.

Now, if there is indeed a mechanism that can automatically keep
 up the integration patches and convert feature branches to an
 integrated source tree via a patch series, I'll gladly eat crow and try
 to convert over.  But I still want to keep pure feature branches, and I
 do not want to have to worry about integration all over again at every
 upload.

Unless new information comes up on this thread, I am done.

manoj
-- 
Reinhart was never his mother's favorite -- and he was an only
child. Thomas Berger
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread martin f krafft
also sprach Manoj Srivastava [EMAIL PROTECTED] [2008.02.22.1627 +0100]:
 I am not sure you have understood feature branches.  They are
  independent, no matter what the overlap. Each feature branch tracks one
  feature against upstream, no matter how the other features work.
 
 The overlap management is done in the integration branch. This
  is significantly different from a quilt series, as others have already
  mentioned in this thread,which is a dependent series of
  linearized patches; and a change in an earlier feature impacts all
  subsequent patches (and  quilt is good at automating the handling of
  that impact). [[duplicated so this can be archived on the vcs-package
  mailing list as well]]

well, I know what feature branches are but I suppose I jumped the
gun. They are independent until you integrate them. But you will
integrate them, thus I tend to think of them as interdependent from
the start.

Anyway, we're not talking about developing with quilt. We are
talking about converting feature branches to quilt patches for the
sake of representation in the source package. I don't see why you
would oppose to that at all, to be honest.

 Or the patch manager does integration. *Shrug*.  Someone has to
  do integration sometime.  That is the nature of the beast.  The trick is
  to do it once, and never have to think about it again.

... except when one feature needs to change and then conflicts with
another feature on re-integration.

  B) Development happens on the feature branch.
[...]
 2) Development on one of the branches conflicts with one or more
other features. Here, the human has to figure out the difference
on the integration branch -- once.

No, every time you do development on the branch. And every time, you
have to remember which branch dependended/conflicted on the feature
branch you're currently working on, or figure it out by trial and
error. I don't consider this efficient. This is work that a computer
should be doing.

-- 
 .''`.   martin f. krafft [EMAIL PROTECTED]
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems
 
windoze 98: n. useless extension to a minor patch release for 32-bit
  extensions and a graphical shell for a 16-bit patch to an 8-bit
  operating system originally coded for a 4-bit microprocessor, written
  by a 2-bit company that can't stand for 1 bit of competition.


digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)


Re: How to cope with patches sanely

2008-02-24 Thread Manoj Srivastava
On Sun, 24 Feb 2008 11:04:21 +0100, martin f krafft [EMAIL PROTECTED] said: 

 also sprach Manoj Srivastava [EMAIL PROTECTED] [2008.02.22.1627
 +0100]:
 I am not sure you have understood feature branches.  They are
 independent, no matter what the overlap. Each feature branch tracks
 one feature against upstream, no matter how the other features work.
 
 The overlap management is done in the integration branch. This is
 significantly different from a quilt series, as others have already
 mentioned in this thread,which is a dependent series of linearized
 patches; and a change in an earlier feature impacts all subsequent
 patches (and quilt is good at automating the handling of that
 impact). [[duplicated so this can be archived on the vcs-package
 mailing list as well]]

 well, I know what feature branches are but I suppose I jumped the
 gun. They are independent until you integrate them. But you will
 integrate them, thus I tend to think of them as interdependent from
 the start.

You have a strange definition of interdependent.  The majority
 of my feature branches are really orthogonal;  seldom on integration
 there is no conflict; so it is hard for me to think of them as somehow
 inter dependent. Sure, there are overlapping changes, sometimes, but
 these are mostly one time resolution issues.

 Anyway, we're not talking about developing with quilt. We are talking
 about converting feature branches to quilt patches for the sake of
 representation in the source package. I don't see why you would oppose
 to that at all, to be honest.

I am not opposed to it. If you can somehow magically create a
 tool that can linearize the feature branches, more power to you. I
 personally find the prospect highly unlikely; and I would like to see
 some code, please, before I grant that such a thing is possible.

 Or the patch manager does integration. *Shrug*.  Someone has to do
 integration sometime.  That is the nature of the beast.  The trick is
 to do it once, and never have to think about it again.

 ... except when one feature needs to change and then conflicts with
 another feature on re-integration.

Sure. You can't integrate two features that fundamentally
 conflict with each other. No amount of smoke and mirrors can obscure
 that fundamental obstacle. This is independent of the tool set you
 use. 

 B) Development happens on the feature branch.
 [...]
 2) Development on one of the branches conflicts with one or more
 other features. Here, the human has to figure out the difference on
 the integration branch -- once.

 No, every time you do development on the branch. And every time, you
 have to remember which branch dependended/conflicted on the feature
 branch you're currently working on, or figure it out by trial and
 error. I don't consider this efficient. This is work that a computer
 should be doing.

Strange. In all my years of using feature branches, I have never
 had to consider which branch depended on what. So no, I don't think I
 _have_ to remember any  such thing; trust me, I would have noticed.  I
 have 30+ packages, and have been using feature branches since  early
 this decade.

If you have a whole slew of features that depend on other
 features, then your feature set is very different from ones I have
 encountered. Dependent features do require more work; but not as much,
 in my opinion, as using quilt or dpatch; but your mileage may vary.

For the most part, I just develop on each branch independently.
 I compile, test, hack, compile, on each individual featre branch. And
 never ever worry about what the other feature branches are like, while
 doing so.

Once in a blue moon (more or less) I have to deconflict the
 integration branch; but mostly those are swiftly resolved issues. And
 once resoved, I tend to forget about them too.  All this worrying about
 branch conflicts seem to be more the realm of quilt and other patch
 series mechanisms; which is mostly my reason to dislike them.

manoj
-- 
(It is an old Debian tradition to leave at least twice a year ...) Sven
Rudolph
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Raphael Hertzog
On Sun, 24 Feb 2008, Charles Plessy wrote:
 Le Sun, Feb 24, 2008 at 10:47:05AM +0100, Raphael Hertzog a écrit :
  
   - When modifying a package that uses dpatch, quilt or simple-patchsys,
 developpers have to find out by themselves if the target for patching
 the sources is patch, apply-patches or apply-dpatches.
  
  Once the new dpkg-source format is in standard use, those rules disappear
  completely... because they are no more needed during build.
 
 I must have missed something. I thought that the new format was to keep
 the debian directory in a tar.gz format. With this format, people who
 want to modify upstream sources will have to use a patch system. What is
 the plan to make the patch targets in debian/rules unneeded?

If the patch are applied by default, there's no need to apply them again
at build time. Then quilt/dpatch tools will only be used by the packager
to modify/updated its patch serie during maintenance but the tool won't be
needed during recompilation (and thus doesn't need to be in
Build-Depends).

Cheers,
-- 
Raphaël Hertzog

Le best-seller français mis à jour pour Debian Etch :
http://www.ouaza.com/livre/admin-debian/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-24 Thread Raphael Hertzog
Hi,

On Sun, 24 Feb 2008, Manoj Srivastava wrote:
 I like the reduced work for each upload, and since it satisfies
  the use cases of being able to present upstream with a pure feature
  changeset;

It doesn't satisfy it completely. You can always generate a patch for
a pure feature changeset but you can't guarantee that all those feature
patches apply at the same time.

Let's say you have 5 feature patches, the upstream maintainer wants to
integrate 3 of them. How can you submit 3 patches that would apply one
after the other? You have to redo some of your integration work that you
already did.

That said, even with a pure quilt set of patches, you can't guarantee it
either. If one of the wanted patch has some overlap with one of the
non-wanted ones...

All in all, I think we do all exagerate the problems. In my experience,
most of the patches applied to a Debian package are relatively independant
of each other and inter-relationships is the exception, not the rule.

But if we can come up with a solution that handles perfectly
inter-dependant patches, that would still be great. :-)

Cheers,
-- 
Raphaël Hertzog

Le best-seller français mis à jour pour Debian Etch :
http://www.ouaza.com/livre/admin-debian/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-23 Thread David Nusinow
On Fri, Feb 22, 2008 at 09:37:24AM -0600, Manoj Srivastava wrote:
 On Thu, 21 Feb 2008 16:20:49 +0100, martin f krafft [EMAIL PROTECTED] said: 
  That does not help me during an NMU from the source package.
 
 For an NMU of one of my source packages, if you can't deal with
  the distributed SCM, then you need not worry about differentiating the
  feature branches, fix the source conflicts, upload. I'll deal with
  fallout.  Comes with the territory. 

If you're applying 10 to 20 different feature branches to your upstream,
then that all comes to the NMU'er as one giant diff. This obviously sucks
and it's what we've been complaining about Ubuntu doing to us for years. We
can do better.

If you want to use your special custom system then that's fine, but I think
that ultimately shipping things as a linear patch stack in the package
makes a lot of sense because you can provide the NMU'er with the ability to
conceptually see the differences in your branches without having to learn
your DVCS. That way you can still use whatever custom system you want to
manage your packages, but at the same time you present your packages to
others in a way that makes it easier for them to work on.

This argument assumes that dpkg-source -x will apply that patch stack
automatically as well, which has been discussed elsewhere.

 - David Nusinow


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-23 Thread Manoj Srivastava
On Sat, 23 Feb 2008 08:46:03 -0500, David Nusinow [EMAIL PROTECTED] said: 

 On Fri, Feb 22, 2008 at 09:37:24AM -0600, Manoj Srivastava wrote:
 On Thu, 21 Feb 2008 16:20:49 +0100, martin f krafft
 [EMAIL PROTECTED] said:
  That does not help me during an NMU from the source package.
 
 For an NMU of one of my source packages, if you can't deal with the
 distributed SCM, then you need not worry about differentiating the
 feature branches, fix the source conflicts, upload. I'll deal with
 fallout.  Comes with the territory.

 If you're applying 10 to 20 different feature branches to your
 upstream, then that all comes to the NMU'er as one giant diff. This
 obviously sucks and it's what we've been complaining about Ubuntu
 doing to us for years. We can do better.

I have hear you say this before, but I am not convinced that the
 situations are really similar.  You see, with Ubuntu, I do not see any
 place they provide the information in a nice separate area, even using
 their preferred SCM, bzr.

That is not the case when using featrure branches, the NMUer can
 get the information they need.

Now, we should also consider the type of NMU, and the need for
 being able to tell the distinction between different threads of
 development.  As a maintainer, where you are juggling user needs for
 features, and trying to add features, and so on, you do need to deal
 with large changes, perhaps touching a large number of files. Here, it
 do need to tell the lines of development apart, and ensure that all the
 lines of development are indivdually undamaged.

For this kind of NMU, you need to be familiar with the package,
 and yes, you need to be able to keep features apart.

Quilt is suboptimal here, since it can't keep features
 independent; since all feaures are impacted by all other features prior
 to it in the linear chain, but I guess it performs well enough.
 Nothing beats a pure featrure ranch in keeping the features
 independent.

But if you are a security NMUer, you have a short time frame,
 and a very targeted fix to install, and you do not have to keep track
 of independent features, and I believe not having a patched source to
 deal with immediately inder such a use case. The feature branch wins
 again, since dpkg-source -x gives you the sources that are used to
 build from, no special shennanigans needed.

 If you want to use your special custom system then that's fine, but I
 think that ultimately shipping things as a linear patch stack in the
 package makes a lot of sense because you can provide the NMU'er with
 the ability to conceptually see the differences in your branches
 without having to learn your DVCS. That way you can still use whatever
 custom system you want to manage your packages, but at the same time
 you present your packages to others in a way that makes it easier for
 them to work on.

In this day and age a DSCM is not a mere custom system.  If
 you want to hack on modern packages, you need to be aware of modern
 tools. Being a Luddite is not something I would encourage.

Now, you are trying to make me go towards a mechanism I think is
 inferior (a liner, dependent, and in my opinion, opaque, and somewhat
 shaky linear patch series) as opposed to pure, independent feature
 branches, for benefits I still think are dubious, so expect serious
 push back.  Especially if for every upload I'll have to redo all the
 integration work of the past; ain't gonna happen.

I am not trying to convince you of the error of your ways.
 Please desist trying to convince me of mine.

 This argument assumes that dpkg-source -x will apply that patch stack
 automatically as well, which has been discussed elsewhere.

Currently vapourware, no?

manoj
-- 
You will be singled out for promotion in your work.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-23 Thread Pierre Habouzit
On Sat, Feb 23, 2008 at 03:08:23PM +, Manoj Srivastava wrote:
 On Sat, 23 Feb 2008 08:46:03 -0500, David Nusinow [EMAIL PROTECTED] said: 
 
  On Fri, Feb 22, 2008 at 09:37:24AM -0600, Manoj Srivastava wrote:
  On Thu, 21 Feb 2008 16:20:49 +0100, martin f krafft
  [EMAIL PROTECTED] said:
   That does not help me during an NMU from the source package.
  
  For an NMU of one of my source packages, if you can't deal with the
  distributed SCM, then you need not worry about differentiating the
  feature branches, fix the source conflicts, upload. I'll deal with
  fallout.  Comes with the territory.
 
  If you're applying 10 to 20 different feature branches to your
  upstream, then that all comes to the NMU'er as one giant diff. This
  obviously sucks and it's what we've been complaining about Ubuntu
  doing to us for years. We can do better.
 
 I have hear you say this before, but I am not convinced that the
  situations are really similar.  You see, with Ubuntu, I do not see any
  place they provide the information in a nice separate area, even using
  their preferred SCM, bzr.
 
 That is not the case when using featrure branches, the NMUer can
  get the information they need.

  Not really, he needs to grok your $SCM, and well, really, nobody but
you (and his author maybe, and even that is unsure) grok baz. And not
even everybody groks git that I'm so fond of.

  Having a clean exchange format where _anyone_ groking diff, ls,
$EDITOR, their shell and some as basic tools is much much better. Nobody
asks you to _work_ with those, it would be just plain great if you just
could generate those instead of a big bloat of unreadable diff (maybe
your packages don't have megabytes of diffs, but as soon as you
relibtoolize a package, they do).

  IOW, I'm totally seconding David here.

-- 
·O·  Pierre Habouzit
··O[EMAIL PROTECTED]
OOOhttp://www.madism.org


pgpq4FLHOBX2L.pgp
Description: PGP signature


Re: How to cope with patches sanely

2008-02-23 Thread David Nusinow
On Sat, Feb 23, 2008 at 09:08:23AM -0600, Manoj Srivastava wrote:
 Now, you are trying to make me go towards a mechanism I think is
  inferior (a liner, dependent, and in my opinion, opaque, and somewhat
  shaky linear patch series) as opposed to pure, independent feature
  branches, for benefits I still think are dubious, so expect serious
  push back.  Especially if for every upload I'll have to redo all the
  integration work of the past; ain't gonna happen.
 
 I am not trying to convince you of the error of your ways.
  Please desist trying to convince me of mine.

No one, not me, nor anyone else in this thread that I've seen, is saying
that you should abandon your sytem. What we want is a consistent method of
dealing with differences from upstream. Currently, we have one giant
.diff.gz, which people hack around either with patch systems or vcs's. If
we switch to something other than a monolithic .diff.gz on top of a
.orig.tar.gz, then we win because currently we just have a lot of chaos.

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. This idea, a linear stack of changes
one on top of the other, is the commonality between every one of the
different means of handling changes to upstream, be they maintained by a
patch system or a vcs. What we want is to stanardize this concept so that
our general tools like dpkg are aware of it.

Given what I know about your system, the only change you would have to make
is that instead of integrating directly in a final branch, you generate a
diff and throw that along with the diff's name in to debian/patches. That's
it. It could be totally automated from your current setup without much
work, if that's what you want. This is not making you give up anything,
it's about improving the base standard so everyone can get more information
without learning a zillion different patch systems and vcs's. As a result,
we can focus on improving the code itself instead of the process of
managing the code.

So, in summary, stop trying to act like you're being forced to do something
that's going to hurt you. No one is taking away your toys.

  This argument assumes that dpkg-source -x will apply that patch stack
  automatically as well, which has been discussed elsewhere.
 
 Currently vapourware, no?

This thread is partially about how to implement this very feature, so
calling it vapor while it's still being planned is unfair.

 - David Nusinow


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-23 Thread Charles Plessy
Le Sat, Feb 23, 2008 at 09:08:23AM -0600, Manoj Srivastava a écrit :
 
 That is not the case when using featrure branches, the NMUer can
  get the information they need.
 
 But if you are a security NMUer, you have a short time frame,

Hi all,

actually, we as packagers have wrote a lot of statements a lot in the
name of NMUers and the security team, but in fact independant opinions
of NMUers have not been read often in this thread, nor from the security
team about what they expect from source packages. Therefore we can all
be plain wrong, as we have no evidence that NMUers want what we are
arguing for: stack of patches and/or link to a fully version-controlled
source tree.

The only thing that seems to make a consensus is that when people have
to modify a package that they have not created, and that it uses a patch
management system, they waste time trying to figure out what is the
debian/rules target to patch the source tree. Changing this would need
to modify two or three packages out of dpatch, quilt, and cdbs, and
unfortunately only the maintainers of quilt package have expressed
interest in a standardisation.

Therefore we did not make progress since the beginning of the
discussion:

- The most efficient way to deal with changes to the sources for the
  packager is to use his preferred tools.
- We do not know if the whole concept of breaking up the monolithic diff
  into logical units is something that the persons who often do NMUs in
  Debian are intersted in.
- When modifying a package that uses dpatch, quilt or simple-patchsys,
  developpers have to find out by themselves if the target for patching
  the sources is patch, apply-patches or apply-dpatches.


Have a nice day,

-- 
Charles Plessy
http://charles.plessy.org
Wakō, Saitama, Japan


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-22 Thread Manoj Srivastava
On Wed, 20 Feb 2008 23:09:03 +0100, sean finney [EMAIL PROTECTED] said: 

 i think this discussion is in part to propose a system that can serve
 as a layer of abstraction between $developer's $scm implementation and
 some common format/methodology, so that when $otherdeveloper comes
 along and needs to muck with the package (say, for a security NMU),
 they don't need to have such knowledge, apart from fakeroot
 debian/rules patch, or possibly even just dpkg-source --patch -x
 $dscfile if a common source format could be established for
 build-time patching tools.

A security team  already gets that for feature branches in a
 DSCM bit -- they just need to dpkg-source  -x; apply their  patch,
 build, and go. They don't really need to understand which of the lines
 in the file belongs to feature A, and which belongs to feature B.

So creating a quilt series from feature branches is not
 something that is being done to address the NMUer or security team
 uploader needs, as far as I can see.

 It is not like quilt provides easy means to compare different feature
 branches -- let alone how the current feature branch C compares to
 the second from last revisions of feature branch F.

 i think that would be:

 $vcs get 2nd from last rev of quilt_patch_F  tmpfile interdiff
 quilt_patch_C tmpfile

Not really, since quilt patch F depends on quilt patch D and E
 being applied, so you are comparing feature C with featrures D, E, And
 F.  Not what was asked for.

See, the feature branches are really different from quilt
 series, since they are pure features, each independently tracked
 against upstream, and are independent of each other. The integration
 branch is the only one where you need to be worried about featuer
 overlap.  I can still compare each feature branch against each other,
 without  being worried about _other_ features, because my system tracks
 each feature independently.

A quilt series is, on the other hand, a dependent series of
 linearized patches; and a change in an earlier feature impacts all
 subsequent patches (and  quilt is good at automating the handling of
 that impact).

  manoj
-- 
He who is good for making excuses is seldom good for anything else.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-22 Thread Manoj Srivastava
On Thu, 21 Feb 2008 16:20:49 +0100, martin f krafft [EMAIL PROTECTED] said: 

 also sprach Manoj Srivastava [EMAIL PROTECTED] [2008.02.20.1722
 +0100]:
 I have to take care of it manually once.  That is the first time I
 setup the integration branch that merges in changes from the
 overlapping feature branches.  This is not a big deal, because the
 human has to spend some time disambiguating the overlap.
 
 It is critical to me that I never have to spend that time again --
 and in my case, I never do, since future non overlapping changes
 (like, say, a new upstream release) produce deltas that apply to the
 feature and integration branches seamlessly.  I never have to rethink
 or redo any patches.

 What if feature B depends on feature A

Interesting.  I have never used feature branches where one
 feature was dependent on another feature; feature branches are usually
 Pure features.  I'll probably end up as creating feature branches A
 and A+B.

 and a new upstream causes a merge conflict in feature A. Then you have
 to fix feature A, which causes a conflict with feature B. Now you have
 to redo the entire integration, taking care to merge in the right
 order...

The latter part is not true; you just pull into the delta the
 change from feature branch A+B; you'll still have to  manually
 intervene twice, once in the A branch, once in the A+B branch, and
 the latter delta goes into the integration branch.

  Yes, just like I want to have feature branches instead of one
  gigantic debian branch.
 
 I use my CSM to provide me the changeset: baz diff branch A
 upstream

 That does not help me during an NMU from the source package.

For an NMU of one of my source packages, if you can't deal with
 the distributed SCM, then you need not worry about differentiating the
 feature branches, fix the source conflicts, upload. I'll deal with
 fallout.  Comes with the territory. 

manoj
-- 
Sic Transit Gloria Thursdi.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-22 Thread Manoj Srivastava
On Thu, 21 Feb 2008 16:23:10 +0100, martin f krafft [EMAIL PROTECTED] said: 

 also sprach James Vega [EMAIL PROTECTED] [2008.02.21.0020 +0100]:
 The difference here being that feature branches are, in my
 experience, changes against the pristine upstream source.  The
 merging of different feature branches is done in some integration
 branch.  Quilt patches are a dependent series where the merging of
 changes is inherent in the patch ordering.  Thus it's easier to get
 an upstream ready patch from $vcs than from a series of
 interdependent patches.

 ... unless feature branches interdepend and you have to store
 dependency information somewhere.

I am not sure you have understood feature branches.  They are
 independent, no matter what the overlap. Each feature branch tracks one
 feature against upstream, no matter how the other features work.

The overlap management is done in the integration branch. This
 is significantly different from a quilt series, as others have already
 mentioned in this thread,which is a dependent series of
 linearized patches; and a change in an earlier feature impacts all
 subsequent patches (and  quilt is good at automating the handling of
 that impact). [[duplicated so this can be archived on the vcs-package
 mailing list as well]]

 Congratulations, you have just reinvented $patch_manager.

Or the patch manager does integration. *Shrug*.  Someone has to
 do integration sometime.  That is the nature of the beast.  The trick is
 to do it once, and never have to think about it again.

What are the most common cases? 
 A) There is a new upstream delta. In this case, 
1) either there is no conflict in any feature branch, in which case
   the upstream delta applies to each feature branch and integration
   branch with no manual thought required.  Indeed, I have a script
   that does this case for me with one command line invocation:
   arch_upgrade.
2) The upstream change conflicts with a feature. A human can then
   disambiguate that feature branch, and the same change then is
   applied to the integration branch.  Only once did I need to think
   about it.  
3) If more than one feature was affected, then I'll need to
   intervene once for each feature affected, and possibly once more
   for the integration branch.  Again, I think this is the minimal
   disambiguation that is needed.
 B) Development happens on the feature branch.
1) There is no conflict with any other feature.  The delta on the
   feature branch is then applied mindlessly to the integration
   branch.
2) Development on one of the branches conflicts with one or more
   other features. Here, the human has to figure out the difference
   on the integration branch -- once.

So, in my experience, A1 is the most common case, followed by B1,
 A2, B2, and A3. The only time I have to even thing about doing
 something manual is A2, A3 and B2 -- and in those cases, human
 intervention can not be eliminated, no matter what tools you use.

My point is that I never have to even think about different
 features or patch  series except in cases where human intervention is
 indispensable anyway. I like that. I am lazy.

manoj
-- 
Reliable source, n.: The guy you just met.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-21 Thread martin f krafft
also sprach Manoj Srivastava [EMAIL PROTECTED] [2008.02.20.1722 +0100]:
 I have to take care of it manually once.  That is the first time
  I setup the integration branch that  merges in changes from the
  overlapping feature branches.  This is not a big deal, because the
  human has to spend some time disambiguating the overlap.
 
 It is critical to me that I never have to spend that time
  again -- and in my case, I never do, since future non overlapping
  changes (like, say, a new upstream release) produce deltas that apply
  to the feature and integration branches seamlessly.  I never have to
  rethink or redo any patches.

What if feature B depends on feature A and a new upstream causes
a merge conflict in feature A. Then you have to fix feature A, which
causes a conflict with feature B. Now you have to redo the entire
integration, taking care to merge in the right order...

  Yes, just like I want to have feature branches instead of one gigantic
  debian branch.
 
 I use my CSM to provide me the changeset:
   baz  diff branch A upstream

That does not help me during an NMU from the source package.

-- 
 .''`.   martin f. krafft [EMAIL PROTECTED]
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems
 
work consists of whatever a body is obliged to do.
 play consists of whatever a body is not obliged to do.
 -- mark twain


digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)


Re: How to cope with patches sanely

2008-02-21 Thread James Vega
On Thu, Feb 21, 2008 at 04:23:10PM +0100, martin f krafft wrote:
 also sprach James Vega [EMAIL PROTECTED] [2008.02.21.0020 +0100]:
  The difference here being that feature branches are, in my experience,
  changes against the pristine upstream source.  The merging of different
  feature branches is done in some integration branch.  Quilt patches are
  a dependent series where the merging of changes is inherent in the patch
  ordering.  Thus it's easier to get an upstream ready patch from $vcs
  than from a series of interdependent patches.
 
 ... unless feature branches interdepend and you have to store
 dependency information somewhere.

Each feature is still a separate candidate for inclusion upstream.  If
you have features A and B, which touch similar files and are therefore
interdependent *in your tree*, the patches sent upstream still need to
be a diff against their vanilla upstream source.

Either you maintain the patches purely against vanilla upstream
initially and perform your own merging when you prepare the Debian
package or you maintain dependent patches and rediff against upstream's
vanilla source before sending the patch their way.

Whether using $vcs or $patch_manager, there is going to be some manual
work to a) get a patch that is purely against vanilla upstream and/or b)
rediff B when A is accepted upstream.  You're just changing when you do
the work.

James
-- 
GPG Key: 1024D/61326D40 2003-09-02 James Vega [EMAIL PROTECTED]


signature.asc
Description: Digital signature


Re: How to cope with patches sanely

2008-02-21 Thread martin f krafft
also sprach James Vega [EMAIL PROTECTED] [2008.02.21.0020 +0100]:
 The difference here being that feature branches are, in my experience,
 changes against the pristine upstream source.  The merging of different
 feature branches is done in some integration branch.  Quilt patches are
 a dependent series where the merging of changes is inherent in the patch
 ordering.  Thus it's easier to get an upstream ready patch from $vcs
 than from a series of interdependent patches.

... unless feature branches interdepend and you have to store
dependency information somewhere.

Congratulations, you have just reinvented $patch_manager.

http://lists.debian.org/debian-devel/2008/02/msg00093.html

-- 
 .''`.   martin f. krafft [EMAIL PROTECTED]
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems
 
violence is the last refuge of the incompetent
   -- isaac asimov


digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)


Re: How to cope with patches sanely

2008-02-20 Thread martin f krafft
also sprach Manoj Srivastava [EMAIL PROTECTED] [2008.02.17.0029 +0100]:
  But sometimes you will have to touch an integration branch and then
  things get messy, especially if there are dependencies between feature
  branches. I think David is making a very strong point here...
 
 No.  You never, ever touch an integration branch.  If you do,
  you  are correct in assuming the mouth of hell shall open and
  spew forth the demons.  The integration branch is only for pulling in
  changes from the feature branches; this is why we have a debian
  feature branch.

I meant to say feature branch.

 You hack in the sloppy branch. You merge change sets from the
  sloppy branch into the feature branches. You merge the delta from the
  feature branch into the integration branch. In my experience, there is
  usually no new mess -- since you are only merging the delta in the
  integration branch; the step you took earlier to deal with the mess
  usually still apply.

So what about dependencies between feature branches? Aren't you just
taking extra care to do it right manually, when in fact the system
should take care of it for you?

  But I may want to see the differences from upstream nicely separated
  into patches, rather than whole chunks?
 
 You mean you do not want to see the differences between a
  feature branch and upstream as one  chunk, but nicely segregated in
  smaller pieces?

Yes, just like I want to have feature branches instead of one
gigantic debian branch.

 Not really, unless your feature branches are poorly chosen.
  Each feature branch, in my packages, represent onlogical feature that
  belongs in the same patch (series).

Right, but given five feature branches, once you create the diff.gz,
there are no more patch*es* or series anymore, there's just one
huge file with everything. Why should we lose the logical separation
between features you have in the VCS when creating the source
package.

-- 
 .''`.   martin f. krafft [EMAIL PROTECTED]
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems
 
i doubt larry wall ever uses strict.
   -- frederick heckel


digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)


Re: How to cope with patches sanely

2008-02-20 Thread Manoj Srivastava
On Wed, 20 Feb 2008 11:17:29 +0100, martin f krafft [EMAIL PROTECTED] said: 

 You hack in the sloppy branch. You merge change sets from the sloppy
 branch into the feature branches. You merge the delta from the
 feature branch into the integration branch. In my experience, there
 is usually no new mess -- since you are only merging the delta in the
 integration branch; the step you took earlier to deal with the mess
 usually still apply.

 So what about dependencies between feature branches? Aren't you just
 taking extra care to do it right manually, when in fact the system
 should take care of it for you?

I have to take care of it manually once.  That is the first time
 I setup the integration branch that  merges in changes from the
 overlapping feature branches.  This is not a big deal, because the
 human has to spend some time disambiguating the overlap.

It is critical to me that I never have to spend that time
 again -- and in my case, I never do, since future non overlapping
 changes (like, say, a new upstream release) produce deltas that apply
 to the feature and integration branches seamlessly.  I never have to
 rethink or redo any patches.
   cd upstream-working-dir
   tla_load_dir ../new-upstream-branch
   cd ..
   arch_upgrade
 and then update the changelog, build, test, piu-parts tests, other
 tests, upload, etc.

  But I may want to see the differences from upstream nicely
  separated into patches, rather than whole chunks?
 
 You mean you do not want to see the differences between a feature
 branch and upstream as one chunk, but nicely segregated in smaller
 pieces?

 Yes, just like I want to have feature branches instead of one gigantic
 debian branch.

I use my CSM to provide me the changeset:
  baz  diff branch A upstream

Indeed, I can get diffs between branch A and branch B -- how do
 you do that using quilt?  Get diffs between arbitrary branches? Trivial
 using my scheme.

 Not really, unless your feature branches are poorly chosen.  Each
 feature branch, in my packages, represent onlogical feature that
 belongs in the same patch (series).

 Right, but given five feature branches, once you create the diff.gz,
 there are no more patch*es* or series anymore, there's just one huge
 file with everything. Why should we lose the logical separation
 between features you have in the VCS when creating the source package.

Not every need needs be satisfied in the source package.  If I
 ship the metadata for arch in the source package, and there is the arch
 grab file that is in the control file, someone who wants to see the
 history, or how feature branch A stacks up to feature branch C, can do
 so using the SCM stuff.

It is not like quilt provides easy means to compare different
 feature branches --  let alone how  the current feature branch C
 compares to the second from last revisions of feature branch F.

I find comparing feature branches to each other as useful as
 comparing them to upstream, personally.

manoj
-- 
Welcome to the Zoo!
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-20 Thread sean finney
On Wednesday 20 February 2008 05:22:08 pm Manoj Srivastava wrote:
  Yes, just like I want to have feature branches instead of one gigantic
  debian branch.

 I use my CSM to provide me the changeset:
   baz  diff branch A upstream

 Indeed, I can get diffs between branch A and branch B -- how do
  you do that using quilt?  Get diffs between arbitrary branches? Trivial
  using my scheme.

we discussed this on irc, but for posterity i'll say it here too:

the you could think of each individual quilt patch as a feature diff, thus 
the quilt equivalent of a feature branch would be the (ideally) pristine 
source plus the diff in question.  so you have explicitly the comparison 
between the feature branch and the source by opening the quilt patch in a 
pager.  to compare the feature branches with each other, you could just do 
something like interdiff patch1 patch2.

 Not every need needs be satisfied in the source package.  If I
  ship the metadata for arch in the source package, and there is the arch
  grab file that is in the control file, someone who wants to see the
  history, or how feature branch A stacks up to feature branch C, can do
  so using the SCM stuff.

i think this discussion is in part to propose a system that can serve as a 
layer of abstraction between $developer's $scm implementation and some common 
format/methodology, so that when $otherdeveloper comes along and needs to 
muck with the package (say, for a security NMU), they don't need to have such 
knowledge, apart from fakeroot debian/rules patch, or possibly even 
just dpkg-source --patch -x $dscfile if a common source format could be 
established for build-time patching tools.

 It is not like quilt provides easy means to compare different
  feature branches --  let alone how  the current feature branch C
  compares to the second from last revisions of feature branch F.

i think that would be:

$vcs get 2nd from last rev of quilt_patch_F  tmpfile
interdiff quilt_patch_C tmpfile

sean


signature.asc
Description: This is a digitally signed message part.


Re: How to cope with patches sanely

2008-02-20 Thread James Vega
On Wed, Feb 20, 2008 at 11:09:03PM +0100, sean finney wrote:
 On Wednesday 20 February 2008 05:22:08 pm Manoj Srivastava wrote:
   Yes, just like I want to have feature branches instead of one gigantic
   debian branch.
 
  I use my CSM to provide me the changeset:
baz  diff branch A upstream
 
  Indeed, I can get diffs between branch A and branch B -- how do
   you do that using quilt?  Get diffs between arbitrary branches? Trivial
   using my scheme.
 
 we discussed this on irc, but for posterity i'll say it here too:
 
 the you could think of each individual quilt patch as a feature diff, thus 
 the quilt equivalent of a feature branch would be the (ideally) pristine 
 source plus the diff in question.  so you have explicitly the comparison 
 between the feature branch and the source by opening the quilt patch in a 
 pager.  to compare the feature branches with each other, you could just do 
 something like interdiff patch1 patch2.

The difference here being that feature branches are, in my experience,
changes against the pristine upstream source.  The merging of different
feature branches is done in some integration branch.  Quilt patches are
a dependent series where the merging of changes is inherent in the patch
ordering.  Thus it's easier to get an upstream ready patch from $vcs
than from a series of interdependent patches.

James
-- 
GPG Key: 1024D/61326D40 2003-09-02 James Vega [EMAIL PROTECTED]


signature.asc
Description: Digital signature


Re: How to cope with patches sanely

2008-02-16 Thread martin f krafft
Sorry for the late reply. I'll send only a single reply this time
since my flood reply seemed to annoy some people. I still think
short single replies are better than long, unified ones...

also sprach Pierre Habouzit [EMAIL PROTECTED] [2008.02.03.2038 +1100]:
 I'm less and less sure that a git-based format is a brilliant
 idea. I like git more than a lot, but it's a poor idea to base
 source packages on them.
  
  Why?
 
   Because it's a way to high level tool for the task. Git (and
   I suppose that the following is true for other DVCS, and if not,
   they _REALLY_ suck, and I mean it, really) has been designed so
   that you can only exchange patches.

Many people actually tend to think of Git as a filesystem...

 IOW, all that you should need to grok what is in a source package
   should basically be tar/ar/cpio/... and vi.
  
  Are you sure that this has to be the case in 10 years?
 
   Are you sure git will be there and backward compatible in 10 years ?
 Okay, it's likely given the current upstream, that focuses a _lot_ on
 backward compatibility. But still. Some repository formats have been
 deprecated (the object store is of version3 and IIRC git doesn't grok
 version1 anymore, but I may be mistaken). That's the kind of gamble I
 wouldn't take.
 
   Whereas I guess tar will always grok tarballs it generates today in 10
 years, and gzip/bzip2/lzma/$compressor won't change either, and text is
 text for enough time to assume it'll remain as editeable in 10 years.

Fair enough, but why would e.g. version3 ever be removed? It's not
like versioned storage formats need a whole lot more support than
the infrastructure to identify them, which is already in place.

  Nice, I didn't see this before. This *is* in fact nice and puts
  the quilt *format* very high on my list.
 
   Yes, quilt preserves *everything* you put in the header, so if you use
 git (or $scm) to generate the patches with authoring information, commit
 message and so on, it wont be lost.

Excellent.

   What I ask you is just to be consistent. Either we _will_ modify
 source packages, either we won't. If we will, adding features to it is a
 good idea, if we won't, let's just focus on how to let it be expressive
 enough to encode in it all what we use as new features upstream from it.
 And as a matter of a fact, quilt is enough for that.

Good arguments. Thanks!



also sprach David Nusinow [EMAIL PROTECTED] [2008.02.03.1154 +1100]:
- patch/feature-branch-specific history. Say feature branch 'foo'
  has a bug, so you check it out and work on it again... now
  you're suddenly in the context of all the work you've previously
  done and you can trivially browse the history of changes
  applicable only to what you're currently working on.
 
 How do you decide the order to apply your feature branches? Do you encode
 it in the branch name? Congratulations, you've just reinvented dbs. Do you
 have a separate file in the debian directory that tells you the merge
 order? Congratulations, you've just reimplemented quilt. Do you write a
 script to update your branches automatically, only failing when you have to
 manually update yourself? Congratulations, you've just reinvented every
 other patch system in existence.

Good points, thanks David.



also sprach Manoj Srivastava [EMAIL PROTECTED] [2008.02.05.1751 +1100]:
 On Sat, 26 Jan 2008 11:34:27 -0500, David Nusinow
 [EMAIL PROTECTED] said:  
 [...]
  An alternate idea I keep seeing is feature branches. I have absolutely
  no idea why these are considered preferable to most people. In the
  case of the X server we regularly carry around 30 patches on our
  stack. If we were to put each of these on its own unique feature
  branch, merging them becomes an exercise in pain. Sure, we could
  implement our own custom scripts and have very strict naming policies,
  but then you've re-invented the wheel and congratulations, you have
  yet another custom piece of crap software that you have to maintain on
  top of the already complicated one you actually care
  about. Additionally, you have a lot more branches getting in the way
  when you're trying to figure out which one you're looking for.
 
 In my experience, once I have created  the integration branch,
  most upstream versions require little to none re-merging; I just apply
  the delta to each of the feature branches, _and_ the integration
  branch. Very rarely do I have to fix up a feature branch, and then
  apply a second delta with that fix up to the integration branch; but it
  has not been, for me, painful at all, nor do I have to jump through
  hoops every single time to accommodate new upstream.

But sometimes you will have to touch an integration branch and then
things get messy, especially if there are dependencies between
feature branches. I think David is making a very strong point
here...



also sprach Ben Finney [EMAIL PROTECTED] [2008.02.07.2242 +1100]:
  On Thu, Feb 07, 2008 at 05:12:00AM 

Re: How to cope with patches sanely

2008-02-16 Thread Pierre Habouzit
On Sat, Feb 16, 2008 at 09:24:12AM +, martin f krafft wrote:
Because it's a way to high level tool for the task. Git (and
I suppose that the following is true for other DVCS, and if not,
they _REALLY_ suck, and I mean it, really) has been designed so
that you can only exchange patches.
 
 Many people actually tend to think of Git as a filesystem...

  I do too, it's just that if you know where you come from, all you need
to rebuild the same state are the patches. Most of the kernel and git
developments are done this way. For the kernel not even every major
contributor uses git (akpm didn't last time I checked) and their
exchange format is patch series, completely bijective with quilt format.

  And given their current tremendous patch integration rate, I _really_
think this format has proven its robustness, while being good enough for
git.


Are you sure git will be there and backward compatible in 10 years ?
  Okay, it's likely given the current upstream, that focuses a _lot_ on
  backward compatibility. But still. Some repository formats have been
  deprecated (the object store is of version3 and IIRC git doesn't grok
  version1 anymore, but I may be mistaken). That's the kind of gamble I
  wouldn't take.
  
Whereas I guess tar will always grok tarballs it generates today in 10
  years, and gzip/bzip2/lzma/$compressor won't change either, and text is
  text for enough time to assume it'll remain as editeable in 10 years.
 
 Fair enough, but why would e.g. version3 ever be removed? It's not
 like versioned storage formats need a whole lot more support than
 the infrastructure to identify them, which is already in place.

  Well, you still don't know if upstream will become mad in the next 10
years, can you ? :) And git code isn't trivial, so I don't think you'll
be able to hack version3 back into it if it's stripped from upstream at
some point.


   Nice, I didn't see this before. This *is* in fact nice and puts
   the quilt *format* very high on my list.
  
Yes, quilt preserves *everything* you put in the header, so if you use
  git (or $scm) to generate the patches with authoring information, commit
  message and so on, it wont be lost.
 
 Excellent.

  In fact afaict, git-quiltimport is able to get authoring informations
and so on, and if it's not able to use embedded blob sha's yet, it's
probably not hard to build from there. As a matter of a fact, I'm
experimenting right now with the llvm2 packaging a way to share our
patch branch (with a co-maint) through debian/patches, and so far, it
doesn't work so badly. IOW, what the xorg people do for months actually,
except that I use git all over the place.

  [ and to be fair we export patches through git-format-patch so there
isn't a series file, but the series file would basically built this
way:  (ls -1 * 2/dev/null || :)  series ]

What I ask you is just to be consistent. Either we _will_ modify
  source packages, either we won't. If we will, adding features to it is a
  good idea, if we won't, let's just focus on how to let it be expressive
  enough to encode in it all what we use as new features upstream from it.
  And as a matter of a fact, quilt is enough for that.

 Good arguments. Thanks!

  :)


 With Extremadura coming up, who would be interested in joining
 a workgroup to work on this stuff? I would volunteer to chair such
 a session...

  I would be very much interested, but I'm not really sure that I'd have
the time to join a session. Note that my talk at FOSDEM could be also a
place to discuss some points too on the subject (If I get the time to
write the damn slides *cough*) :)

-- 
·O·  Pierre Habouzit
··O[EMAIL PROTECTED]
OOOhttp://www.madism.org


pgpWT7YscntFp.pgp
Description: PGP signature


Re: How to cope with patches sanely

2008-02-16 Thread Manoj Srivastava
On Sat, 16 Feb 2008 20:24:12 +1100, martin f krafft [EMAIL PROTECTED] said: 

 also sprach Manoj Srivastava [EMAIL PROTECTED] [2008.02.05.1751
 +1100]:
 On Sat, 26 Jan 2008 11:34:27 -0500, David Nusinow
 [EMAIL PROTECTED] said: [...]
  An alternate idea I keep seeing is feature branches. I have
  absolutely no idea why these are considered preferable to most
  people. In the case of the X server we regularly carry around 30
  patches on our stack. If we were to put each of these on its own
  unique feature branch, merging them becomes an exercise in
  pain. Sure, we could implement our own custom scripts and have very
  strict naming policies, but then you've re-invented the wheel and
  congratulations, you have yet another custom piece of crap software
  that you have to maintain on top of the already complicated one you
  actually care about. Additionally, you have a lot more branches
  getting in the way when you're trying to figure out which one
  you're looking for.
 
 In my experience, once I have created the integration branch, most
 upstream versions require little to none re-merging; I just apply the
 delta to each of the feature branches, _and_ the integration
 branch. Very rarely do I have to fix up a feature branch, and then
 apply a second delta with that fix up to the integration branch; but
 it has not been, for me, painful at all, nor do I have to jump
 through hoops every single time to accommodate new upstream.

 But sometimes you will have to touch an integration branch and then
 things get messy, especially if there are dependencies between feature
 branches. I think David is making a very strong point here...

No.  You never, ever touch an integration branch.  If you do,
 you  are correct in assuming the mouth of hell shall open and
 spew forth the demons.  The integration branch is only for pulling in
 changes from the feature branches; this is why we have a debian
 feature branch.

You hack in the sloppy branch. You merge change sets from the
 sloppy branch into the feature branches. You merge the delta from the
 feature branch into the integration branch. In my experience, there is
 usually no new mess -- since you are only merging the delta in the
 integration branch; the step you took earlier to deal with the mess
 usually still apply.

If you are speculating there will be unforeseen and
 unmentionable problems, all I can say is that I have yet to experience
 them, and not all my packages are trivial packaging of upstream
 versions.

 also sprach Ben Finney [EMAIL PROTECTED]
 [2008.02.07.2242 +1100]:
  On Thu, Feb 07, 2008 at 05:12:00AM +, Manoj Srivastava wrote:
  That's not really about bring your feature branches into a patch
  system, but rather export them into something that looks like one
  so that the security team or the NMUer can have a good outlook of
  the modifications you apply to upstream.
 
 In the scenario Manoj presents above, the modifications applied to
 upstream are easily available all in one place: the foo.diff.gz.

 But I may want to see the differences from upstream nicely separated
 into patches, rather than whole chunks?

You mean you do not want to see the differences between a
 feature branch and upstream as one  chunk, but nicely segregated in
 smaller pieces?

 This is the same argument why 32k diffs provided on patches.ubuntu.com
 are useless to Debian maintainers.

Not really, unless your feature branches are poorly chosen.
 Each feature branch, in my packages, represent onlogical feature that
 belongs in the same patch (series).

manoj

-- 
Mountain Dew and doughnuts...  because breakfast is the most important
meal of the day.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-11 Thread Russ Allbery
Manoj Srivastava [EMAIL PROTECTED] writes:
 On Thu, 7 Feb 2008 11:48:47 +, Matthew Johnson [EMAIL PROTECTED] said: 
 On Thu Feb 07 22:42, Ben Finney wrote:

 In the scenario Manoj presents above, the modifications applied to
 upstream are easily available all in one place: the foo.diff.gz.

 But all as one patch, not as your nice separated list of commits
 and/or branches.

   True. We now have to evaluate the benefits of providing sources
  that the binary packages are built from with no fuss (dpkg -x); which
  can then be inspected and patched.

Well, this whole thread was really about how to have our cake and eat it
too, so I don't think we should assume that we can't provide the sources
with no muss and not *also* use a patch system.  That's what many of us
were trying to work towards with the discussion of how quilt would fit
into wigpen.

 What  is the use case this effort is designed to address?  I
  have not actually heard NMU/porters express a need for converting
  monolithic patches to patch series.  Have I missed the need statements? 

It's to let those of us who think of a patch as a useful unit of
development instead of a branch continue to develop Debian packages using
the methodology that we feel makes us the most productive without causing
extra problems for the security team and NMUs.

-- 
Russ Allbery ([EMAIL PROTECTED])   http://www.eyrie.org/~eagle/



Re: How to cope with patches sanely

2008-02-11 Thread Manoj Srivastava
On Thu, 7 Feb 2008 11:48:47 +, Matthew Johnson [EMAIL PROTECTED] said: 

 On Thu Feb 07 22:42, Ben Finney wrote:
 In the scenario Manoj presents above, the modifications applied to
 upstream are easily available all in one place: the foo.diff.gz.

 But all as one patch, not as your nice separated list of commits
 and/or branches.

True. We now have to evaluate the benefits of providing sources
 that the binary packages are built from with no fuss (dpkg -x); which
 can then be inspected and patched.

How often do people performing NMU's have to figure out the
 various threads of development which are merged into the
 integration branch (which is what is uploaded to Debian)?  It is not as
 if the threads of development are not available; and people actively
 helping to develop the Debian package could just learn the DCVS tool --
 but that is not the use case I thought we were considering.

 This patch format can then be created from DVCSen if you like that,
 quilt if you like that or diff/patch if you like that. It still has
 separate, commented patches, but doesn't require the security team to
 know '*every* patch bundle system' or to know how to deal with a DVCS.

What  is the use case this effort is designed to address?  I
 have not actually heard NMU/porters express a need for converting
 monolithic patches to patch series.  Have I missed the need statements? 

manoj
-- 
All Bibles are man-made. Thomas Edison
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-11 Thread Manoj Srivastava
On Fri, 08 Feb 2008 09:45:06 +0100, Pierre Habouzit [EMAIL PROTECTED] said: 

 On Thu, Feb 07, 2008 at 11:42:16AM +, Ben Finney wrote:
 Pierre Habouzit [EMAIL PROTECTED] writes:
 
  On Thu, Feb 07, 2008 at 05:12:00AM +, Manoj Srivastava wrote:
   Why should I bring my feature branches into a patch
   system, when
there is no need to?  As far as the end user or NMUer is
ocnerned, they do apt-get source foo, and they get the sources
they may hack on. Adding to the chaos by converting my nice,
clean source format to the blecherousness of a patch system does
seem like regression to me..
  
That's not really about bring your feature branches into a
patch
  system, but rather export them into something that looks like one
  so that the security team or the NMUer can have a good outlook of
  the modifications you apply to upstream.
 
 In the scenario Manoj presents above, the modifications applied to
 upstream are easily available all in one place: the foo.diff.gz.

   Yeah, in the very same way ubuntu gives patches to debian[0], in a
   big
 fat unreadable blurb without comments or explanations.

However, with my proposal, you do have alternate methods of
 getting to the threads of development,  indeoendenntly of each other,
 in a manner that allows you to individually build org + thread1
 separately from orig + thread2 -- not something that quilt allows, if I
 understand it.

I am also not convinced that the threads of development need to
  be all in the source package, as opposed to the DCVS.

However, a number of people do think that dpkg-source -x
 providing the sources that are used to build the binary package are
 important. 

   You didn't read carefully it seems, I'm advocating using _THE_ (not
 a, the sole only one format) quilt format to split the .diff.gz in
 something readable and understandable by a mere mortal. For all I
 care, I think wig  pen was supposed to support multiple .diff.gz,
 well, maybe it should just support the .diff.gz being a
 .quilt.tar.gz. _that_'s *all* I say.


I am not convinced of the practicality of this proposed solution
 (actually, I am skeptical of all the models proposed so far.)

manoj
-- 
Kime's Law for the Reward of Meekness: Turning the other cheek merely
ensures two bruised cheeks.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely -- Debian New Maintainers'

2008-02-09 Thread Patrick Schoenfeld
Hi Pierre,

(BTW. there is no need to CC me with your answers, I did not ask for
that as I am subscribed to the list :-)

On Sat, Feb 09, 2008 at 12:50:46AM +0100, Pierre Habouzit wrote:
   quilt is way more powerful to refresh patches when a new upstream
 occurs. It does what it can do best without having mergeing features,
 that only an advanced SCM can provide anyways.

That does mean quilt is able to refresh patches on upstream changes, so
that with luck the maintainer does not have to refresh the patches for
changes sources himself? That would be quiet nice, however I still fail
to see why this is a reason to prefer quilts *format* as an *exchange
format* if quilt itself is not to be used, which is what you say.

   And while being powerful, it remains simple, which dpatch is not.

dpatch is not simple? When refreshing patches or overall? As a dpatch
user I cannot really confirm this. Different to that I tried to work
into quilt these days and it seems to be way more complicated (and needs
some setup before working for debian packaging at all, which dpatch does
not need).

Best Regards,
Patrick


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-08 Thread Pierre Habouzit
On Thu, Feb 07, 2008 at 11:42:16AM +, Ben Finney wrote:
 Pierre Habouzit [EMAIL PROTECTED] writes:
 
  On Thu, Feb 07, 2008 at 05:12:00AM +, Manoj Srivastava wrote:
   Why should I bring my feature branches into a patch system, when
there is no need to?  As far as the end user or NMUer is ocnerned, they
do apt-get source foo, and they get the sources they may hack
on. Adding to the chaos by converting my nice, clean source format to
the blecherousness of a patch system does seem like regression to me..
  
That's not really about bring your feature branches into a patch
  system, but rather export them into something that looks like one so
  that the security team or the NMUer can have a good outlook of the
  modifications you apply to upstream.
 
 In the scenario Manoj presents above, the modifications applied to
 upstream are easily available all in one place: the foo.diff.gz.

  Yeah, in the very same way ubuntu gives patches to debian[0], in a big
fat unreadable blurb without comments or explanations.

  It sounds like a fair thing to me. You can't decently ask the
  security team to know every single $SCM out ther, and guess how
  $random_developer use it (especially, sorry but it's true, when it's
  a SCM as complicated as tla is).
 
 In the scenario Manoj presents above, no-one in the security team
 needs to know how to do anything but get the source package, since

  Neiter in mine.

 Whereas with a patch bundle system, the security team needs to know
 *every* patch bundle system in use and how to use it, just to have a
 chance of operating on arbitrary Debian source packages.

  You didn't read carefully it seems, I'm advocating using _THE_ (not a,
the sole only one format) quilt format to split the .diff.gz in
something readable and understandable by a mere mortal. For all I care,
I think wig  pen was supposed to support multiple .diff.gz, well, maybe
it should just support the .diff.gz being a .quilt.tar.gz. _that_'s
*all* I say.

  [0] a troll ? where ? :P

-- 
·O·  Pierre Habouzit
··O[EMAIL PROTECTED]
OOOhttp://www.madism.org


pgpy1W63Gb3tA.pgp
Description: PGP signature


Re: How to cope with patches sanely -- Debian New Maintainers'

2008-02-08 Thread Patrick Schoenfeld
Hi Matt,

On Wed, Feb 06, 2008 at 11:25:19AM +, Matthew Johnson wrote:
 I'd have said that it would be more sensible to define a reasonable subset
 of quilt features. A set of patches with comments at the top and a

yes, this sounds reasonable. But I'm not a quilt user and therefore
don't know which features it support that may be useful for others too.
But editting patches in a prepared environment seems to be common to all
patch systems, so at least I have anything I need ;-) Can't speak for
others, though.

 series file can be manipulated by many tools, isn't really
 quilt-specific. 

Indeed. After all the series file is just a text file.

 Allowing obscure quilt-only features wasn't what I'd
 understood from the discussion.

Neither did I. I just thought that it could have some features that make
it so much better then dpatch, which could actually make up the reason why
everybody is crying damn dpatch, glorify quilt. So now everybody says
that they are *not* even talking about the tool, but instead about the
quilt *format* as an interchange format. That doesn't appear to be
logical, because there seems not to be a big difference between the two
exchange formats but indeed between the tools.

I was just wondering and I am still.

Regards,
Patrick


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely -- Debian New Maintainers'

2008-02-08 Thread Pierre Habouzit
On Fri, Feb 08, 2008 at 09:50:20AM +, Patrick Schoenfeld wrote:
 Neither did I. I just thought that it could have some features that make
 it so much better then dpatch, which could actually make up the reason why
 everybody is crying damn dpatch, glorify quilt. So now everybody says
 that they are *not* even talking about the tool, but instead about the
 quilt *format* as an interchange format. That doesn't appear to be
 logical, because there seems not to be a big difference between the two
 exchange formats but indeed between the tools.
 
 I was just wondering and I am still.

  quilt is way more powerful to refresh patches when a new upstream
occurs. It does what it can do best without having mergeing features,
that only an advanced SCM can provide anyways.

  And while being powerful, it remains simple, which dpatch is not.

-- 
·O·  Pierre Habouzit
··O[EMAIL PROTECTED]
OOOhttp://www.madism.org


pgpirwZrhlppK.pgp
Description: PGP signature


Re: How to cope with patches sanely

2008-02-07 Thread Pierre Habouzit
On Thu, Feb 07, 2008 at 05:12:00AM +, Manoj Srivastava wrote:
 On Tue, 5 Feb 2008 09:00:52 +, Matthew Johnson [EMAIL PROTECTED] said: 
 
  On Tue Feb 05 00:51, Manoj Srivastava wrote:
   If we can't figure out a good and clean way to keep a large stack
   of long-lived patches in the vcs then I firmly believe we should
   standardize on quilt.
  
  I think I have indeed solved the issue of long standing feature sets
  using feature branches, integration branches, and sloppy branches
  while upgrading, and would not want to be forced to regress to a
  patch system.
  
  I don't think anyone is talking about forcing DVCS users to regress to
  a patch system, merely to change the interchange format; which all
  DVCS-based maintenance methods can easily export to/import from. The
  only reason which you would have to interact with it would be a more
  standard interface for NMUs, which can only be a good thing.
 
 Why should I bring my feature branches into a patch system, when
  there is no need to?  As far as the end user or NMUer is ocnerned, they
  do apt-get source foo, and they get the sources they may hack
  on. Adding to the chaos by converting my nice, clean source format to
  the blecherousness of a patch system does seem like regression to me.

  That's not really about bring your feature branches into a patch
system, but rather export them into something that looks like one so
that the security team or the NMUer can have a good outlook of the
modifications you apply to upstream. It sounds like a fair thing to me.
You can't decently ask the security team to know every single $SCM out
ther, and guess how $random_developer use it (especially, sorry but it's
true, when it's a SCM as complicated as tla is).

-- 
·O·  Pierre Habouzit
··O[EMAIL PROTECTED]
OOOhttp://www.madism.org


pgp4RScm9eFKg.pgp
Description: PGP signature


Re: How to cope with patches sanely

2008-02-07 Thread Matthew Johnson
On Thu Feb 07 22:42, Ben Finney wrote:
 
 In the scenario Manoj presents above, the modifications applied to
 upstream are easily available all in one place: the foo.diff.gz.

But all as one patch, not as your nice separated list of commits and/or
branches.

 Whereas with a patch bundle system, the security team needs to know
 *every* patch bundle system in use and how to use it, just to have a
 chance of operating on arbitrary Debian source packages.

That's not what is being suggested (although it is the current state).

If there is one standard patch _format_ then they need only learn one
set of commands (which may be as simple as diff and patch, or may be
quilt).

This patch format can then be created from DVCSen if you like that,
quilt if you like that or diff/patch if you like that. It still has
separate, commented patches, but doesn't require the security team to
know '*every* patch bundle system' or to know how to deal with a DVCS.

Matt

-- 
Matthew Johnson


signature.asc
Description: Digital signature


Re: How to cope with patches sanely

2008-02-07 Thread Ben Finney
Pierre Habouzit [EMAIL PROTECTED] writes:

 On Thu, Feb 07, 2008 at 05:12:00AM +, Manoj Srivastava wrote:
  Why should I bring my feature branches into a patch system, when
   there is no need to?  As far as the end user or NMUer is ocnerned, they
   do apt-get source foo, and they get the sources they may hack
   on. Adding to the chaos by converting my nice, clean source format to
   the blecherousness of a patch system does seem like regression to me.
 
   That's not really about bring your feature branches into a patch
 system, but rather export them into something that looks like one so
 that the security team or the NMUer can have a good outlook of the
 modifications you apply to upstream.

In the scenario Manoj presents above, the modifications applied to
upstream are easily available all in one place: the foo.diff.gz.

 It sounds like a fair thing to me. You can't decently ask the
 security team to know every single $SCM out ther, and guess how
 $random_developer use it (especially, sorry but it's true, when it's
 a SCM as complicated as tla is).

In the scenario Manoj presents above, no-one in the security team
needs to know how to do anything but get the source package, since
that gets the complete original source and a foo.diff.gz showing
exactly what changes are applied. With 'debcheckout' even knowing what
VCS is used will be unnecessary.

Whereas with a patch bundle system, the security team needs to know
*every* patch bundle system in use and how to use it, just to have a
chance of operating on arbitrary Debian source packages.

-- 
 \ “It is far better to grasp the universe as it really is than to |
  `\  persist in delusion, however satisfying and reassuring.” |
_o__)  —Carl Sagan |
Ben Finney


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-07 Thread Michael Banck
On Sat, Feb 02, 2008 at 10:26:52PM +0100, Pierre Habouzit wrote:
   Bah that's the worst reason I ever seen to not use a DVCS in Debian.
 Please look at the debian packages with patches, and please tell me how
 many come with a comment about what the patch do. Please start with the
 glibc if you don't know where to start.  Then please resume the
 discussion about how having patches series make them more commented.

Well, we sort of managed to get our debian/changelog entries more
readable due to social pressure, if we standardize on a patch exchange
format which mandates a description in the header, we can probably
continously improve the description of patches as well.


Michael


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-07 Thread Russ Allbery
Michael Banck [EMAIL PROTECTED] writes:

 Well, we sort of managed to get our debian/changelog entries more
 readable due to social pressure, if we standardize on a patch exchange
 format which mandates a description in the header, we can probably
 continously improve the description of patches as well.

A lintian check can help, too.  lintian already complains about dpatch
patches without descriptions, and only doesn't complain about quilt ones
because I haven't gotten around to writing the code.

-- 
Russ Allbery ([EMAIL PROTECTED])   http://www.eyrie.org/~eagle/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-06 Thread Manoj Srivastava
On Tue, 5 Feb 2008 09:00:52 +, Matthew Johnson [EMAIL PROTECTED] said: 

 On Tue Feb 05 00:51, Manoj Srivastava wrote:
  If we can't figure out a good and clean way to keep a large stack
  of long-lived patches in the vcs then I firmly believe we should
  standardize on quilt.
 
 I think I have indeed solved the issue of long standing feature sets
 using feature branches, integration branches, and sloppy branches
 while upgrading, and would not want to be forced to regress to a
 patch system.
 
 I don't think anyone is talking about forcing DVCS users to regress to
 a patch system, merely to change the interchange format; which all
 DVCS-based maintenance methods can easily export to/import from. The
 only reason which you would have to interact with it would be a more
 standard interface for NMUs, which can only be a good thing.

Why should I bring my feature branches into a patch system, when
 there is no need to?  As far as the end user or NMUer is ocnerned, they
 do apt-get source foo, and they get the sources they may hack
 on. Adding to the chaos by converting my nice, clean source format to
 the blecherousness of a patch system does seem like regression to me.

manoj
-- 
IBM Advanced Systems Group -- a bunch of mindless jerks, who'll be first
against the wall when the revolution comes...  -- with regrets to
D. Adams
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-06 Thread Manoj Srivastava
On Tue, 05 Feb 2008 18:30:40 +0100, Sven Mueller [EMAIL PROTECTED] said: 

 On another note, I have a slight problem with the (other) proposal of
 using a (git/$DVCS) repository as the form of source package
 distribution. Mainly because I think this will usually add
 bloat. While developing/packaging, I often see intermediate commits
 which need to be heavily modified or even reverted to finally build
 the patch I wanted to get working. Though these commits are fine in
 the Repository, I wouldn't want to see all the intermediate steps in
 the source package.

I take it that you do not use sloppy branches to do
 development.  I can see why you generate cruft in the repo. I generally
 do my development in a sloppy branch, which is in a private repo.  When
 things work as I like, I then refactor patches from the sloppy branch
 into a feature branch  (I have a catch-all features branch for stuff
 that is small and unlikely to make it into upstream). Each commit into
 a feature branch can be clean -- and then merged forward into the
 integration branch immediately.

This way, all th cruft lies in the sloppy branch, which I then
 dump.

manoj
-- 
Real Programmers don't write in PL/I.  PL/I is for programmers who can't
decide whether to write in COBOL or FORTRAN.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-05 Thread Adam Borowski
On Tue, Feb 05, 2008 at 12:34:08AM -0600, Manoj Srivastava wrote:
  On Thu, 2008-01-31 at 10:54:11 +0100, Pierre Habouzit wrote:
 Of course, that would mean that the few debian/rules (hi Manoj)
   in Debian not being makefiles [...]
 What do you mean, still? I have never used anything but make in
  my rules files; indeed, I was the one who has (over the objections of a
  few people) maintained that the policy of requiring Make files make
  sense.
 
 I do have Perl maintainer scripts, though.

Hmm... I think that maybe Joey Hess uses such scripts, too.

-- 
1KB // Microsoft corollary to Hanlon's razor:
//  Never attribute to stupidity what can be
//  adequately explained by malice.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-05 Thread Matthew Johnson
On Tue Feb 05 00:51, Manoj Srivastava wrote:
  If we can't figure out a good and clean way to keep a large stack of
  long-lived patches in the vcs then I firmly believe we should
  standardize on quilt.
 
 I think I have indeed solved the issue of long standing feature
  sets using feature branches, integration branches, and sloppy branches
  while upgrading, and would not want to be forced to regress to a patch
  system. 
 
I don't think anyone is talking about forcing DVCS users to regress to a
patch system, merely to change the interchange format; which all
DVCS-based maintenance methods can easily export to/import from. The
only reason which you would have to interact with it would be a more
standard interface for NMUs, which can only be a good thing.

I am against patch system users being forced to changed to a DVCS
system, however, which _has_ been suggested. (It may be technically
superior, but let me change when I'm ready by demonstrating the
virtues and providing tutorials, don't force me to use it because it's
the new source format)

Matt

-- 
Matthew Johnson


signature.asc
Description: Digital signature


Re: How to cope with patches sanely

2008-02-05 Thread Miles Bader
Manoj Srivastava [EMAIL PROTECTED] writes:
 Umm. Why would any distributed version control system always
  need history truncation?  I am not even sure that arch has such a
  thing; and I have never felt the need for such a beast.

 A distributed VCS that bundles in the whole archive in every
  checkout might well need that, but not all distributed VCS systems do
  that.

I wouldn't be surprised if arch took as much room to store log files
({arch}/...) as e.g. git takes to store the actual content of historical
revisions.  Deleting those log files is arch's version of history
truncation.

[Not that I've actually felt the need to do so, but they do take up a
lot of room...]

-Miles

-- 
.Numeric stability is probably not all that important when you're guessing.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-05 Thread Ben Finney
Matthew Johnson [EMAIL PROTECTED] writes:

 I am against patch system users being forced to changed to a DVCS
 system, however, which _has_ been suggested.

I've not seen that suggested in this thread. Can you give a reference,
please?

What I've seen, that might be confused with the above, is:

  * arguments against patch systems on the basis of forcing others to
use those specific tools; followed by requests;

  * arguments for DVCS workflows on the basis that they provide the
advantages of tracking changes without forcing others to know the
specific tool used;

  * requests from, and responses to, people wanting to know how a DVCS
workflow can do this.

-- 
 \   Everything you read in newspapers is absolutely true, except |
  `\for that rare story of which you happen to have first-hand |
_o__) knowledge. —Erwin Knoll |
Ben Finney


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-05 Thread Lars Wirzenius
On ti, 2008-02-05 at 12:07 +, Matthew Johnson wrote:
 Also: * The package format should be standardised such that the same
 workflow works for everyone.

If that's a reference to my first post to this discussion, it's not
accurate. I don't care about standardizing package formats, but I do
want to have one, simple sequence of operations to work on all packages.
Specifically I want dpkg-source -x to unpack a source package so that
it is ready for modification, and dpkg-source -b to build a new source
package after it's been edited. Patch systems can and should conform to
that, since it's important for those doing archive-wide QA.



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-05 Thread Matthew Johnson
On Tue Feb 05 22:43, Ben Finney wrote:
 Matthew Johnson [EMAIL PROTECTED] writes:
 
  I am against patch system users being forced to changed to a DVCS
  system, however, which _has_ been suggested.
 
 I've not seen that suggested in this thread. Can you give a reference,
 please?
 
 What I've seen, that might be confused with the above, is:
 
   * arguments against patch systems on the basis of forcing others to
 use those specific tools; followed by requests;
 
   * arguments for DVCS workflows on the basis that they provide the
 advantages of tracking changes without forcing others to know the
 specific tool used;

Also: * The package format should be standardised such that the same
workflow works for everyone.

This implies to me that those who dislike patch systems and like DVCS
workflows wish to standardise on the latter. I don't see how someone who
wants to deal with patches can do that, whereas I can see how DVCS users
can continue their workflow, but still have a patch system in the source
format.

(I would go through and get references, but it's a long thread, and I
 should be working. Sorry)

Matt

-- 
Matthew Johnson


signature.asc
Description: Digital signature


Re: How to cope with patches sanely

2008-02-05 Thread Matthew Johnson
On Tue Feb 05 14:16, Lars Wirzenius wrote:
 On ti, 2008-02-05 at 12:07 +, Matthew Johnson wrote:
  Also: * The package format should be standardised such that the same
  workflow works for everyone.
 
 If that's a reference to my first post to this discussion, it's not
 accurate. I don't care about standardizing package formats, but I do
 want to have one, simple sequence of operations to work on all packages.
 Specifically I want dpkg-source -x to unpack a source package so that
 it is ready for modification, and dpkg-source -b to build a new source
 package after it's been edited. Patch systems can and should conform to
 that, since it's important for those doing archive-wide QA.

I agree with that, however the discussion following that had lots of
people (at least to me) saying that this set of operations should be a
DVCS workflow. If I've misinterpreted that then I'm sorry to whoever
I've inadvertently maligned (-:

Standardising NMU/QA workflow is good. I just don't think it should
involve invoking any sort of VCS and knowing how the merging works.

Matt

-- 
Matthew Johnson


signature.asc
Description: Digital signature


Re: How to cope with patches sanely

2008-02-05 Thread Sven Mueller

Simon Huggins wrote on 29/01/2008 02:51:

[wigpen]

The meta data can easily be in these version control systems that
everyone on these threads seems to love so much.

If you want to keep more patches than you expose through wigpen then
just don't publish them in the dsc.


That won't work well for one of the packages I (co-)maintain (and I 
assume for some other packages, too): I want a patch to be included in 
the Debian source, since it implements an often requested feature, but 
it can break other things. In other words: It conflicts with another 
patch (or maybe even two), but I want somebody who does apt-get source 
on the package to be able to do a (trivial) modification to the unpacked 
source and rebuild the package to have that feature (though knowing that 
this breaks something else).



I think all Debian really needs is tools to generate a wigpen source
package and the appropriate tools to then deal with it e.g. dak and
sbuild updates.


But still, wigpen looks nice to me. I could include the necessary patch 
files (and short docs on how to get alternative build working) in the 
debian.tar.gz instead of the .patches.tar.gz IIUIC and reach the same 
goal I mentioned above. If wigpen supported a series file (quilt) or 
00list file (dpatch) in the .patches.tar.gz archive, I wouldn't need to 
work around anything.
I don't mind getting the patches applied during unpack of the source 
package as long as the tool that is able to generate the source package 
from that unpacked source has a way to find out that someone changed the 
source after all patches were applied and handling that in a sane way 
(e.g. creating and enlisting an addition patch in .patches.tar.gz).


On another note, I have a slight problem with the (other) proposal of 
using a (git/$DVCS) repository as the form of source package 
distribution. Mainly because I think this will usually add bloat. While 
developing/packaging, I often see intermediate commits which need to be 
heavily modified or even reverted to finally build the patch I wanted to 
get working. Though these commits are fine in the Repository, I wouldn't 
want to see all the intermediate steps in the source package.


cu,
Sven



signature.asc
Description: OpenPGP digital signature


Re: How to cope with patches sanely -- Debian New Maintainers' Guide

2008-02-05 Thread Patrick Schoenfeld
Hi,

On Sat, Jan 26, 2008 at 12:40:14AM +0900, Osamu Aoki wrote:
 This seems to be much cleaner than dpatch or quilt.  Also with the help
 of gitk, history is much more visible.  I look forward to see it matured
 and accepted.

personally I am a fan of the diversity in the Debian project. Its really
fine, that developers are not forced to work with certain software
(besides the minimal common standardisation that is needed), while I
don't see a reason why they shouldn't be able to. However I also agree
that in some levels diversity is way too much.
The way patches to the upstream source is handled is one of these
points where the diversity is way to much, as I and obviously a lot of
other people think as well.

So, yes, there should be a common agreement of how we handle patches and
I am a fan of version control systems (for a number of reasons), but I
would not agree that forcing all developers to use git is a good idea.
Personally I would think that it makes more sense to keep version
control and patch management seperated. There could be a common
agreement on a patch system and that would be really fine. I'm using
dpatch so far, but it has its weakness, so I don't see a reason why I
shouldn't go with another patch system.

So, I would agree with those recommending quilt, if it has significant
pros besides dpatch. That would be forcing to a specific tool and so
giving up some diversity, but it would keep giving up freedom of choice
on a low level, while forcing everybody to a specific VCS wouldn't keep
it low.

Best Regards,
Patrick


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely -- Debian New Maintainers' Guide

2008-02-05 Thread Pierre Habouzit
On Tue, Feb 05, 2008 at 06:24:38PM +, Patrick Schoenfeld wrote:
 So, I would agree with those recommending quilt, if it has significant
 pros besides dpatch. That would be forcing to a specific tool and so
 giving up some diversity, but it would keep giving up freedom of choice
 on a low level, while forcing everybody to a specific VCS wouldn't keep
 it low.

  Again, the discussion isn't (for me) about a tool, but an exchange
format. We are discussing having patches served in a quilt series, and
let people adapt their tools to be able to export their work as a quilt
series so that other can find it and import it in their own tool of
choice if needed.

  Enforcing maintenance tools is A Bad Idea™. The difference is huge:
having common interfaces means that there is One True Tool that everyone
can use if he doesn't know the Real Tools the Maintainer uses (apt-get
source versus $SCM clone/checkout/whatever).

-- 
·O·  Pierre Habouzit
··O[EMAIL PROTECTED]
OOOhttp://www.madism.org


pgpTVJqKeUgIB.pgp
Description: PGP signature


Re: How to cope with patches sanely

2008-02-04 Thread John Goerzen
On Sun February 3 2008 10:47:59 am Raphael Hertzog wrote:
 On Sat, 02 Feb 2008, Kumar Appaiah wrote:

 I was explaining how I would handle patches on top of upstream code. And
 where you have to update the patches when the upstream code changes.
 Rebase is exactly the process of updating patches while merge is really
 keep the old patch and add fixups patch to reconcile after conflicts.

From what I remember of looking at rebase when I was evaluating git, isn't a 
side effect of it that it causes inconvenience for everyone that tracks your 
tree?  That is, if you are going to use rebase on a tree, it is generally a 
private tree used on only one of your own machines, rather than something 
that others pull from as well?

I have yet to see a convenient way to manage this, with any VCS whatsoever, 
that:

1. Lets you easily check out the state of the patched tree as of any given 
point in time

2. Lets you easily maintain a patchset where the patches on any given version 
are clearly separated into logical patches that can easily be sent to 
upstream

3. Facilitates teamwork with others using your repo

The closest that I've seen yet is Mercurial's mq extension, which is 
quilt-like, in the mode where both the main repo and the mq area are 
versioned.  This fails #1 because you have to get the main repo and the mq 
area to the same point manually, but succeeds on the others.

I also am meaning to toy around with Mercurial's transplant extension, which 
can be similar to git's rebase (I gather), but with some other 
tree-manipulating features.  But that fails the easily part because it's 
fairly esoteric VCS stuff.

Frankly I have been able to keep my deltas to upstream small enough that just 
using a basic Mercurial repo for this has been fine.  Although I maintain a 
fairly large package (Bacula), it is still nowhere near the size of KDE and 
X, and I also have the benefit of a very good working relationship with 
upstream.

-- John



Re: How to cope with patches sanely

2008-02-04 Thread Raphael Hertzog
On Mon, 04 Feb 2008, John Goerzen wrote:
 On Sun February 3 2008 10:47:59 am Raphael Hertzog wrote:
  On Sat, 02 Feb 2008, Kumar Appaiah wrote:
 
  I was explaining how I would handle patches on top of upstream code. And
  where you have to update the patches when the upstream code changes.
  Rebase is exactly the process of updating patches while merge is really
  keep the old patch and add fixups patch to reconcile after conflicts.
 
 From what I remember of looking at rebase when I was evaluating git, isn't a 
 side effect of it that it causes inconvenience for everyone that tracks your 
 tree?  That is, if you are going to use rebase on a tree, it is generally a 
 private tree used on only one of your own machines, rather than something 
 that others pull from as well?

Yes it is. One needs to make it clear that a given branch is going to be
rebased and can't be used for merging.

Cheers,
-- 
Raphaël Hertzog

Le best-seller français mis à jour pour Debian Etch :
http://www.ouaza.com/livre/admin-debian/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-04 Thread Guillem Jover
On Thu, 2008-01-31 at 10:54:11 +0100, Pierre Habouzit wrote:
   Of course, that would mean that the few debian/rules (hi Manoj) in
 Debian not being makefiles [...]

You were probably thinking about Josip (and now the VDR team):

  http://lintian.debian.org/reports/Tdebian-rules-not-a-makefile.html

regards,
guillem


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-04 Thread Pierre Habouzit
On Mon, Feb 04, 2008 at 08:02:42PM +, Guillem Jover wrote:
 On Thu, 2008-01-31 at 10:54:11 +0100, Pierre Habouzit wrote:
Of course, that would mean that the few debian/rules (hi Manoj) in
  Debian not being makefiles [...]
 
 You were probably thinking about Josip (and now the VDR team):
 
   http://lintian.debian.org/reports/Tdebian-rules-not-a-makefile.html

  Damn, I was pretty sure Manoj still had some custom perl things, but I
stand corrected :)
-- 
·O·  Pierre Habouzit
··O[EMAIL PROTECTED]
OOOhttp://www.madism.org


pgp8Ph3x3dalv.pgp
Description: PGP signature


Re: How to cope with patches sanely

2008-02-04 Thread Russ Allbery
Pierre Habouzit [EMAIL PROTECTED] writes:
 On Mon, Feb 04, 2008 at 08:02:42PM +, Guillem Jover wrote:
 On Thu, 2008-01-31 at 10:54:11 +0100, Pierre Habouzit wrote:

   Of course, that would mean that the few debian/rules (hi Manoj) in
 Debian not being makefiles [...]

 You were probably thinking about Josip (and now the VDR team):

   http://lintian.debian.org/reports/Tdebian-rules-not-a-makefile.html

   Damn, I was pretty sure Manoj still had some custom perl things, but I
 stand corrected :)

The VDR stuff actually is makefiles, too; it's a shell script wrapper
around make that, so far as I could tell with a quick look, doesn't do
anything that one couldn't do with a regular make include.  But I may be
missing some subtlety.

-- 
Russ Allbery ([EMAIL PROTECTED])   http://www.eyrie.org/~eagle/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-04 Thread Manoj Srivastava
On Mon, 04 Feb 2008 22:24:09 +0100, Pierre Habouzit [EMAIL PROTECTED] said: 

 On Mon, Feb 04, 2008 at 08:02:42PM +, Guillem Jover wrote:
 On Thu, 2008-01-31 at 10:54:11 +0100, Pierre Habouzit wrote:
Of course, that would mean that the few debian/rules (hi Manoj)
  in Debian not being makefiles [...]

 You were probably thinking about Josip (and now the VDR team):
 http://lintian.debian.org/reports/Tdebian-rules-not-a-makefile.html

   Damn, I was pretty sure Manoj still had some custom perl things, but
 I stand corrected :)

What do you mean, still? I have never used anything but make in
 my rules files; indeed, I was the one who has (over the objections of a
 few people) maintained that the policy of requiring Make files make
 sense.

I do have Perl maintainer scripts, though.

manoj
-- 
A clever prophet makes sure of the event first.
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-04 Thread Manoj Srivastava
On Sat, 26 Jan 2008 00:05:32 +, Darren Salt
[EMAIL PROTECTED] said:  

 Whatever DSCM is used, it needs history truncation.

Umm. Why would any distributed version control system always
 need history truncation?  I am not even sure that arch has such a
 thing; and I have never felt the need for such a beast.

A distributed VCS that bundles in the whole archive in every
 checkout might well need that, but not all distributed VCS systems do
 that.

manoj
-- 
The wise and intelligent are coming belatedly to realize that alcohol,
and not the dog, is man's best friend.  Rover is taking a beating -- and
he should. -- W.C. Fields
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely

2008-02-04 Thread Manoj Srivastava
On Sat, 26 Jan 2008 11:34:27 -0500, David Nusinow
[EMAIL PROTECTED] said:  

 What bothers me about Joey's blog entry, and other similar proposals,
 is that it ignores a major reason for having external patch systems in
 the first place. Many of us have to carry long-lived patches to very
 complicated software. I'm personally thinking of the X server, but
 there are bound to be other examples. Additionally, we often have to
 carry several of these throughout the lifetime of the package. We also
 have to carry patches that aren't yet suitable for upstream, but may
 eventually become so. Finally, we have to carry patches backported
 from upstream HEAD.

I have beeing doing this for some of my packages using arch; and
 while none of my packages are as large as X, it has worked out  quite
 well for me.

 The idea proposed by many people, to keep the patches merged in your
 debian-specific branch, only really improves lives in the last case,
 when those patches are going to be merged in for the future anyhow. In
 any case where you have a patch that isn't going to go upstream for a
 long while, if ever, keeping these patches merged becomes painful.

This has not been my experience with feature branches +
 integration branch.

 If the patches are large, then you'll forget most all of the details
 which makes merging painful. Additionally, it becomes quite difficult
 to see a large patch that touches many files in the whole. A great
 deal of archaelology becomes necessary to cope with that. If the patch
 becomes suitable to go upstream after some time, it also becomes hard
 to extract that patch to be sent later.

 An alternate idea I keep seeing is feature branches. I have absolutely
 no idea why these are considered preferable to most people. In the
 case of the X server we regularly carry around 30 patches on our
 stack. If we were to put each of these on its own unique feature
 branch, merging them becomes an exercise in pain. Sure, we could
 implement our own custom scripts and have very strict naming policies,
 but then you've re-invented the wheel and congratulations, you have
 yet another custom piece of crap software that you have to maintain on
 top of the already complicated one you actually care
 about. Additionally, you have a lot more branches getting in the way
 when you're trying to figure out which one you're looking for.

In my experience, once I have created  the integration branch,
 most upstream versions require little to none re-merging; I just apply
 the delta to each of the feature branches, _and_ the integration
 branch. Very rarely do I have to fix up a feature branch, and then
 apply a second delta with that fix up to the integration branch; but it
 has not been, for me, painful at all, nor do I have to jump through
 hoops every single time to accommodate new upstream.

 If we can't figure out a good and clean way to keep a large stack of
 long-lived patches in the vcs then I firmly believe we should
 standardize on quilt.

I think I have indeed solved the issue of long standing feature
 sets using feature branches, integration branches, and sloppy branches
 while upgrading, and would not want to be forced to regress to a patch
 system. 

manoj
-- 
Usage: fortune -P [] -a [xsz] [Q: [file]] [rKe9] -v6[+] dataspec
... inputdir
Manoj Srivastava [EMAIL PROTECTED] http://www.debian.org/~srivasta/  
1024D/BF24424C print 4966 F272 D093 B493 410B  924B 21BA DABB BF24 424C


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely (Was: State of the project - input needed)

2008-02-03 Thread Andreas Tille

On Sat, 2 Feb 2008, martin f krafft wrote:


PS: this figure is 80% correct but will surely be questioned by 70%
of the people. The likelihood that someone replies to this message
is 50%.


I just take the mere chance to do this. ;-)


The likelihood that someone flames is currently 12.6%.


Is this number related to the 50% answers or absolute?


The likelihood that I err is 0.


I like this. ;-)

I also like the feeling when sun might have risen behind the mountains
in high North

 Andreas.

--
http://fam-tille.de


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: How to cope with patches sanely (Was: State of the project - input needed)

2008-02-03 Thread Pierre Habouzit
On Sat, Feb 02, 2008 at 08:21:44AM +, martin f krafft wrote:
 also sprach Pierre Habouzit [EMAIL PROTECTED] [2008.01.27.0505 +1100]:
Seconded. I'd add, that in fact we should standardize on quilt
as an exchange format for patches, because it's simple, and that
there are powerful tools to handle them.
 
 Except those patches contain no VCS-specific data, like the author.
 In relation to licencing issues, I think it's especially interesting
 to have the ability to cherry-pick and keep the original committer
 info unchanged. I'd say what we really want is a way to cherry-pick
 between different VCS, and a higher-level wrapper on top of all VCS
 implementing a generic, cross-distro workflow.

  FWIW I export my patches in an almost quilt compatible way (ls -1 
series and that would be true), using git format-patch, hence retaining
VCS informations.

  Using quilt as an exchange format doesn't mean that you should strip
off VCS metadatas (for the clever ones that supports it). Git works the
same with a series of patches with authoring information. That's carved
into its design.

-- 
·O·  Pierre Habouzit
··O[EMAIL PROTECTED]
OOOhttp://www.madism.org


pgpYMOVI7eNCh.pgp
Description: PGP signature


Re: How to cope with patches sanely (Was: State of the project - input needed)

2008-02-03 Thread Pierre Habouzit
On Sat, Feb 02, 2008 at 08:38:14AM +, martin f krafft wrote:
 also sprach Pierre Habouzit [EMAIL PROTECTED] [2008.01.27.0939 +1100]:
  On Fri, Jan 25, 2008 at 06:00:02PM +, Raphael Hertzog wrote:
   On Fri, 25 Jan 2008, Michael Banck wrote:
On Fri, Jan 25, 2008 at 10:51:05AM +0100, Lucas Nussbaum wrote:
 On 25/01/08 at 08:01 +, Steve Langasek wrote:
  As a second runner up, quilt is ok by me. :)
 
 ...
 
I'm less and less sure that a git-based format is a brilliant
idea. I like git more than a lot, but it's a poor idea to base
source packages on them.
 
 Why?

  Because it's a way to high level tool for the task. Git (and I suppose
that the following is true for other DVCS, and if not, they _REALLY_
suck, and I mean it, really) has been designed so that you can only
exchange patches. That means that you can work on your git repository,
extract your patches, send them upstream, see upstream merge them into
his git repository and when you fetch back, git figures things out.
*DANG* that's how the kernel and git itself are developed.

  There is no *need* to force people using git to grok the format since
git *is* able to grok it (not the current one, but some form of wigpen
should probably work).

IOW, all that you should need to grok what is in a source package
  should basically be tar/ar/cpio/... and vi.
 
 Are you sure that this has to be the case in 10 years?

  Are you sure git will be there and backward compatible in 10 years ?
Okay, it's likely given the current upstream, that focuses a _lot_ on
backward compatibility. But still. Some repository formats have been
deprecated (the object store is of version3 and IIRC git doesn't grok
version1 anymore, but I may be mistaken). That's the kind of gamble I
wouldn't take.

  Whereas I guess tar will always grok tarballs it generates today in 10
years, and gzip/bzip2/lzma/$compressor won't change either, and text is
text for enough time to assume it'll remain as editeable in 10 years.
 
 At the same time, I don't think it's wise to expect people to know
 the different ways to handle git.tar.gz and bzr.tar.gz and so on.
 I think what we want is the often-mentioned wrapper which hides the
 actual storage backend in use.

  No IMSHO we want the tools we use to be able to import informations
from these packages easily, and in fact, we rather just want them to
generate those packages. I see little point in .git.tar.gz because it
only holds _recent_ history, and you can't base new devels on it (you
cannot commit in a shallow clone in git). AFAUI in bzr it's even worse:
shallow clones have a reference to the original repository, that could
have disappeared in 10 years. So it makes this extra history usefulness
quite useless in the long term [I'm not saying it's a waste of space or
whatever, I just say it's IMHO a not so useful feature, which adds a
clear complexity and non-editability to the package].

On Sat, Feb 02, 2008 at 08:43:12AM +, martin f krafft wrote:
 also sprach Theodore Tso [EMAIL PROTECTED] [2008.01.28.1613 +1100]:
  From: Author O' The Patch [EMAIL PROTECTED]
  Detailed patch description
  Signed-off-by: Theodore Ts'o [EMAIL PROTECTED]
  
  This is at the beginning of every single quilt patch, and because of
  this, we can easily important the patch into either a mercurial or git
  repository, while preserving the authorship information of the patch.
 
 Nice, I didn't see this before. This *is* in fact nice and puts
 the quilt *format* very high on my list.

  Yes, quilt preserves *everything* you put in the header, so if you use
git (or $scm) to generate the patches with authoring information, commit
message and so on, it wont be lost.

  You agree on the fact that a Debian source package isn't (or shouldn't
for big enough packages) be the preferred form of modification. Then
it's that it's an exchange format. As an exchange format quilt is
brilliant, because it holds *EVERYTHING* a SCM need to figure out how to
rebuild meregeable and rebaseable patches from it. So why bother with
anything else ?

  An exchange format *Must* be simple. That's the very reason why Debian
uses rfc822-style flat files everywhere, and that's one of our best
strength:
  (1) this format is ubiquitous in Debian ;
  (2) it's really easy to parse (in the Debian flavour that doesn't need
  the stupid quoted-printeable escapings and so on at least) ;
  (3) it's human readable ;
  (4) implementing parsers and generators take usually less than a
  hundred lines in a high level enough language.

  .git.tar.gz fails in those 4 points.

  What I ask you is just to be consistent. Either we _will_ modify
source packages, either we won't. If we will, adding features to it is a
good idea, if we won't, let's just focus on how to let it be expressive
enough to encode in it all what we use as new features upstream from it.
And as a matter of a fact, quilt is enough for that.


-- 
·O·  Pierre Habouzit
··O  

  1   2   3   >