[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#888313: please allow git remote configuration (e.g. for upstream remote)



See the attached work-in-progress patch for how far I got at this point. Before I continue, here are two questions:

AFAICT, the control package doesn’t allow me to do case-insensitive lookups. Should we extend it to do that, or do we really want to insist on users capitalizing the directives correctly?

Also, I’m wondering whether we should set up a branch automatically (e.g. “upstream” tracking “upstream/master”), not at all, or behind another option. This ties into our branch naming and import workflow discussion. Thoughts?

On Mon, Feb 12, 2018 at 12:13 PM, Michael Stapelberg <stapelberg@debian.org> wrote:
When cloning a git repository containing Debian packaging (no matter whether you use git-clone or gbp-clone), you’ll end up with one or more branches all tracking the remote from which you cloned (e.g. alioth, or salsa).

In debian-x, there is https://salsa.debian.org/xorg-team/debian/xsf-tools/blob/master/xsf-remote-add-upstream, which takes care of the problem.

We’re discussing adding this feature to git-buildpackage, and were wondering whether the suggestion in this bug would be helpful for debian-x, too. If debian-x doesn’t use git-buildpackage, the question is moot of course (unless you intend to adopt it in the future) :).

On Mon, Feb 12, 2018 at 12:02 PM, Julien Cristau <jcristau@debian.org> wrote:
On 02/11/2018 02:20 PM, Michael Stapelberg wrote:
> Given that it has been two weeks, I don’t think we’re going to get a
> reply from debian-x :)

It's not clear to me what the question is.  I've also never used
git-buildpackage, so may be missing context.

Cheers,
Julien

>
> I’d suggest to just go ahead — I can’t see why the suggested approach
> wouldn’t work for debian-x, and even if they need something on top, it’d
> be easy to add that later.
>
> Guido, how do we proceed? Do you want to take care of this, or would you
> rely on an external patch for this feature?
>
> Thanks!
>
> On Mon, Jan 29, 2018 at 9:47 AM, Guido Günther <agx@sigxcpu.org
> <mailto:agx@sigxcpu.org>> wrote:
>
>     Hi,
>     On Thu, Jan 25, 2018 at 09:32:01AM +0100, Michael Stapelberg wrote:
>     >    On Thu, Jan 25, 2018 at 8:11 AM, Guido Günther <[1]agx@sigxcpu.org <mailto:agx@sigxcpu.org>> wrote:
>     >
>     >      Hi Michael,
>     >      On Wed, Jan 24, 2018 at 10:27:25PM +0100, Michael Stapelberg wrote:
>     >      > Package: git-buildpackage
>     >      > Version: 0.9.6
>     >      > Severity: wishlist
>     >      >
>     >      > When using a pure git workflow (no tarballs involved), as documented
>     >      in
>     >      >
>     >      file:///usr/share/doc/git-buildpackage/manual-html/gbp.import.upstream-git.html,
>     >      > it is common to configure the “upstream” git remote to be the actual
>     >      upstream,
>     >      > whereas the “origin” git remote would be a repository on alioth.
>     >      >
>     >      > E.g., for the golang-text package, I would configure:
>     >      > remote “origin” is git.debian.org:/git/pkg-go/packages/golang-text.git
>     >      > remote “upstream” is [2]https://github.com/kr/text
>     >      >
>     >      > Now, when another team member of the pkg-go team uses gbp-clone on the
>     >      alioth
>     >      > repository, they won’t get my “upstream” git remote configuration.
>     >      >
>     >      > This means publishing git repositories is lossy: what I have on my
>     >      hard disk
>     >      > does not reflect what other team members will get when they clone the
>     >      > repository.
>     >      >
>     >      > This makes updating packages way harder than it should be :)
>     >      >
>     >      > Could we add options to debian/gbp.conf to get an upstream git remote
>     >      configured
>     >      > automatically when cloning please?
>     >
>     >      For purely git based workflow this makes. For this to be nicely
>     >      integrated we'd
>     >      need to store the information somehwere in the packakge e.g.
>     >
>     >        X-Upstream-VCS:
>     >
>     >      in debian control so not each packaging team has to cook it's own
>     >      solution.
>     >      However it could be nicely protyped using gbp clone's postclone hooks.
>     >      Cheers,
>     >       -- Guido
>     >
>     >    Done, see
>     >   
>     [3]https://github.com/Debian/pkg-go-tools/blob/master/cmd/pgt-remote-add-upstream/upstream.go
>     <https://github.com/Debian/pkg-go-tools/blob/master/cmd/pgt-remote-add-upstream/upstream.go>
>     >    To install, use:
>     >    % sudo apt install golang-go git
>     >    % go get -u
>     [4]github.com/Debian/pkg-go-tools/cmd/pgt-remote-add-upstream
>     <http://github.com/Debian/pkg-go-tools/cmd/pgt-remote-add-upstream>
>     >    Then, use the binary in ~/go/bin/pgt-remote-add-upstream as postclone
>     >    hook.
>     >    While this works for the time being, I’d like to see it in
>     >    git-buildpackage proper, if only because hook configuration is cumbersome
>     >    to do in a packaging-group-specific way.
>     >    I noticed that the xorg-team also has a similar
>     >    script: [5]http://x.debian.net/reference/git-usage.html
>     <http://x.debian.net/reference/git-usage.html> (search for
>     >    “xsf-remote-add-upstream”). Theirs uses debian/watch. 
>     >    kibi, would xorg-team be happy with gbp looking at the X-Vcs-Upstream-Git
>     >    key/value pair in debian/control, or do you have any special requirements?
>
>     Yes, we should have this in gbp proper. It would be good to hear from
>     the xsf if this would fit for them as well (I notice that they use
>     debian/watch for that).
>     Cheers
>      -- Guido
>
>
>
>
> --
> Best regards,
> Michael




--
Best regards,
Michael



--
Best regards,
Michael
From 420e186d320f515e3cc1ae75f37884220b3150e7 Mon Sep 17 00:00:00 2001
From: Michael Stapelberg <stapelberg@debian.org>
Date: Tue, 13 Feb 2018 09:55:55 +0100
Subject: [PATCH] WIP: clone: add upstream remote from X-Vcs-Upstream-*

---
 gbp/scripts/clone.py | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gbp/scripts/clone.py b/gbp/scripts/clone.py
index 74cb6ad..55b901c 100755
--- a/gbp/scripts/clone.py
+++ b/gbp/scripts/clone.py
@@ -24,6 +24,7 @@ import sys
 import os
 from gbp.config import (GbpOptionParser, GbpOptionGroup)
 from gbp.deb.git import DebianGitRepository
+from gbp.deb.source import DebianSource
 from gbp.git import (GitRepository, GitRepositoryError)
 from gbp.errors import GbpError
 from gbp.scripts.common import ExitCodes
@@ -202,6 +203,14 @@ def main(argv):
 
         repo.set_branch(options.debian_branch)
 
+        source = DebianSource('.')
+        control = source.control
+        # TODO: case-insensitive? handle key not present.
+        gbp.log.info('vcs upstream: %s' % control['X-Vcs-Upstream-Git'])
+        gbp.log.info('vcs branch: %s' % control['X-Vcs-Upstream-Branch'])
+        repo.add_remote_repo('upstream', control['X-Vcs-Upstream-Git'], fetch=True)
+        # TODO: git branch -u upstream/<branch> <gbp-upstream-branch-name>
+
         repo_setup.set_user_name_and_email(options.repo_user, options.repo_email, repo)
 
         if postclone:
-- 
2.15.1


Reply to: