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 <stapelb...@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 <jcris...@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 <a...@sigxcpu.org
>> > <mailto:a...@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]
>> a...@sigxcpu.org <mailto:a...@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.impor
>> t.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/pac
>> kages/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/p
>> gt-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 <stapelb...@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 via email to