Hi Michael,
On Thu, Mar 23, 2017 at 10:13:27AM +0100, Michael Stapelberg wrote:
> Sorry for the late reply.

Same here.

> 
> On Fri, Dec 23, 2016 at 7:23 PM, Guido Günther <a...@sigxcpu.org> wrote:
> 
> > Hi Michael,
> > On Mon, Dec 19, 2016 at 08:41:38AM +0100, Michael Stapelberg wrote:
> > > On Fri, Nov 25, 2016 at 2:06 PM, Guido Günther <a...@sigxcpu.org> wrote:
> > >
> > > > Hi Michael,
> > > > On Thu, Nov 24, 2016 at 12:34:56PM +0100, Michael Stapelberg wrote:
> > > > > Hi Axel and Guido,
> > > > >
> > > > > Axel Beckert <a...@debian.org> writes:
> > > > > > But it would be nice to do the pushing of branches and tags in one
> > > > > > short DWIM command instead of two short commands or one long
> > command
> > > > > > (git push + git push --tags or listing all refs manually), like
> > "dpt
> > > > > > push" does. So I extended "dpt push" to parse gbp.conf files, so
> > that
> > > > > > I can use it outside the Debian Perl Group, too, e.g. for the
> > Debian
> > > > > > Zsh Maintainers.
> > > > >
> > > > > I do agree, pushing in one command is much more user-friendly than
> > not
> > > > > providing any help when pushing. I used to forget pushing the
> > > > > pristine-tar/upstream branches and/or tags _ALL THE TIME_.
> > > > >
> > > > > It was such a big problem for me that I wrote a custom wrapper for
> > gbp
> > > > > clone, which would set up the repository in such a way that I
> > couldn’t
> > > > > forget anymore:
> > > > >
> > > > >         # This tells git to push all branches at once,
> > > > >         # i.e. if you changed upstream and debian (after
> > > > git-import-orig),
> > > > >         # both upstream and debian will be pushed when running “git
> > > > push”.
> > > > >         git config push.default matching
> > > > >
> > > > >         # This tells git to push tags automatically,
> > > > >         # so you don’t have to use “git push && git push --tags”.
> > > > >         git config --add remote.origin.push
> > "+refs/heads/*:refs/heads/*"
> > > > >         git config --add remote.origin.push
> > "+refs/tags/*:refs/tags/*"
> > > > >
> > > > > Needless to say, the above could easily be added to gbp clone, so
> > that
> > > > > at least newly cloned repositories would be set up accordingly.
> > > > >
> > > > > What do you think of the solution above, i.e. configuring git so that
> > > > > “git push” is all that’s necessary, instead of introducing a new “gbp
> > > > > push” command? Would a corresponding patch be accepted into
> > > > > git-buildpackage?
> > > >
> > > > Thanks for looking into this. I think we need a "gbp push" after all
> > > > since matching strategy might be too broad: you might not want to push
> > > > changes for all releases and you might want to upload what you just
> > > > built in one go.
> > > >
> > >
> > > How do you envision the user interface to look like for this tool? I.e.,
> > > what sort of command invocations should users use in order to upload
> > > changes?
> > >
> > >
> > > >
> > > > [gbp-posttag-push][0] does parts of the job already. It mostly needs
> > > > some cleanup and robustness to be turned into a gbp-push.
> > > >
> > >
> > > I’m happy to work on this, if you provide some more details as to what
> > > exactly “some cleanups” entails :).
> >
> > Axel describes his use of dpt-push as:
> > …
> > * Install the resulted packages and test them
> > * Run "git-buildpackage --git-tag-only" to set the tags
> > * Run dput on the changes file
> > * If the upload succeeds, then run "dpt push", i.e. push all relevant
> >   branches and tags.
> >
> > And I'm ussing gbp buildpackage --git-tag-only like:
> >
> > * gbp buildpackage (build, run autopkg tests, run lintian)
> > * Install the resulted packages and test them
> > * Run "git-buildpackage --git-tag-only" to
> >     * Run dput on the changes file
> >     * Push tags
> >
> > So I'd say "gbp push" would
> >
> > 0.) Check if we're in a git repo and the repo is clean
> 
> 1.) Check if topmost changelog is != UNRELEASED
> > 2.) Check if there's a tag referring to the topmost changelog entry
> > 3.) Check if there's an upstream tag available
> > 4.) Check if there's a corresponding changes file available (and no
> > .upload)
> >
> 
> See point 6.
> 
> 
> > 5.) Check if we can push debian branch, debian tag, upstream tag, upstream
> >     branch, pristine-tar branch
> >
> 
> Technically speaking, how would this check work specifically?

I've done this already in the meantime. See gbp-posttag-push:

  
https://github.com/agx/git-buildpackage/blob/master/examples/gbp-posttag-push#L235

and

  
https://github.com/agx/git-buildpackage/blob/master/examples/gbp-posttag-push#L252


> > 6.) dput the changes
> >
> 
> I frequently use --git-export-dir, i.e. the .changes files end up in some
> directory which has no relation whatsoever to the git directory in which
> I’m working.
> 
> How would gbp push find the .changes files? Storing a symlink (or similar)
> in the working directory feels unclean. Prescribing a certain path for the
> changes files feels unclean. Adding a flag to gbp push seems like it would
> undermine the simplification we’re trying to achieve.

I would look for it in ../ or export-dir.

> It seems cleaner to me to not look at/touch any .changes files. Especially
> since users can easily achieve the same effect by using dput && gbp
> push.

Simplifying the build -> push -> dput cycle and making it more robust is
some thing I'd like to see with "gbp push" (and what I'm currently using
in gbp-posttag-push).

That said if "gbp push" starts with "only" the git pushing that's
fine with me as long as we can share the code between "gbp push" and
"gbp-posttag-push". We can then move over parts as we go.


> > 7.) Push debian branch, debian tag, upstream tag, upstream
> >     branch, pristine-tar branch
> >
> > gbp-posttag-push does 6. and 7. but it can skip some of the checks since
> > it can assume that it's called from within a git repo (since it's a hook
> > and that some of the tags are already there, since it's a posttag
> > hook). We'd need to add these when turning it into a standalone command.
> > We also need to add a manpage.
> >
> > We should probably also add sloppy mode that just pushes whatever is on
> > the debian-branch to the remote side but that can be done in a later
> > version.
> >
> > We also need to make the remote configurable but this can also be added
> > n a later version.
> >
> > Hope I didn't miss something. Thanks for having look!
> >  -- Guido
> >
> 
> 
> 
> -- 
> Best regards,
> Michael

Cheers,
 -- Guido

Reply via email to