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