Osamu Aoki writes ("Bug#926181: want automatic forwarding of patches to the 
upstream branch"):
> Package: dgit
> Version: 8.4
> Severity: wishlist

Hi.  Thanks for your message.  I'm always interested in hearing what
people want so please don't be discouraged by what I say next:

> In case of the Debian maintainer is the same person as the upstream
> maintainer, I would like to see automatic support to the operation
> described in dgit-maint-merge(7).  This is nice alternative to native
> package workflow and nice upstream history.

I am struggling to understand how you think this could work
automatically.  The biggest problem is that the data model in
dgit-maint-merge(7) does not necessarily break the Debian delta into
individual commits.

Also a problem is that I don't think there is an easy way of
discovering what the upstream is like and how to submit patches there.

(As an aside: I don't think any of this depends on whether the Debian
maintainer is the same person as the upstream with a different hat
on.)

> |FORWARDING PATCHES UPSTREAM
> | The basic steps are:
> |
> | 1.  Create a new branch based off upstream's master branch.
> | 3.  Push the branch somewhere and ask upstream to merge it, or use 
> git-format-patch(1) or git-request-pull(1).

So (taking things out of order) these require knowing what the
upstream is and how to find its master branch and submit a merge
request.

It's true that we do have some metadata conventions for this kind of
thing in Debian.  But maybe the task of automating steps 1 and 3
should be a separate program, in devscripts maybe ?  It doesn't seem
dgit specific.

> | 2.  git-cherry-pick(1) commits from your master branch onto your new branch.

This is the hardest part.  I think in general only the maintainer will
know what commit(s) to cherry-pick.

> I want automated operation which goes like:

You seem to think that with dgit-maint-merge(7) there is a nice linear
list of the commits which are in Debian but not upstream.  But there
isn't: in the general case, there is a lot of merging and the only
reasonably condensed representation of the Debian delta is the output
of `git diff' between the upstream and Debian branches.

I think what you really want to make this easy is a different data
model.  Have you looked at git-debrebase or gbp pq ?  Both of those
maintain the Debian delta as a linear series of commits.

git-debrebase already knows how to do many of the manipulations you
describe.  For example:

>  * for commit changing within debian/* only
>    --> ignore
>  * for commit changing outside of debian/* only
>    --> apply as is with the same commit messages
>  * for commit changing everything
>    --> apply changes outside of debian/*
>    --> use the same commit message

git-debrebase already knows how to separate commits out into "Debian"
parts and "upstream files" parts, and can split a "mixed" commit into
its two halves.  So it can leave you with a tidy delta queue.

Perhaps there should be a
   git-debrebase list
which shows you the delta queue and maybe some of your other
suggestions might make good git-debrebase features.

I hope my explanations make some kind of sense.  If not maybe we need
a less formal but more interactive channel such as irc; feel free to
look for me as Diziet on oftc and freenode.

Ian.

Reply via email to