diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2017-01-06 18:29:00 +0000 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2017-01-08 22:14:48 +0000 |
commit | 302a82c5e9e200fe93befefbdeb2b9ccfac00239 (patch) | |
tree | 7ec762c005262ca506c2ab3610717aabcaa0ec2e | |
parent | 194f799def5d74fba6f7e035372b2f4e01aa6ec7 (diff) |
Protocol change: Add distro info to Dgit field
Downstream clients may need this to get the relevant git commits.
Worse, with the new rewrite functionality, they may get the _wrong_
commits because they may not be rewritten.
For now we implement the publication side. The reader side is
theoretically straightforward, but probably not so simple in reality,
and certainly fiddly to test.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rw-r--r-- | debian/changelog | 7 | ||||
-rwxr-xr-x | dgit | 7 | ||||
-rw-r--r-- | dgit.7 | 7 |
3 files changed, 16 insertions, 5 deletions
diff --git a/debian/changelog b/debian/changelog index b72ac69..562e415 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,9 @@ -dgit (2.17~) unstable; urgency=medium +dgit (3.0~) unstable; urgency=medium + + Protocol change: + * Dgit: field now records the nominal distro name, and a hint + for a tag and url where the git objects (including any rewrite + map) can be fetched.. Bugfixes: * dgit config handling: Honour command-line and context-provided @@ -3723,7 +3723,11 @@ sub push_mktags ($$ $$ $) { die unless $tagwants->[0]{View} eq 'dgit'; - $dsc->{$ourdscfield[0]} = $tagwants->[0]{Objid}; + my $declaredistro = access_nomdistro(); + my $reader_giturl = do { local $access_forpush=0; access_giturl(); }; + $dsc->{$ourdscfield[0]} = join " ", + $tagwants->[0]{Objid}, $declaredistro, $tagwants->[0]{Tag}, + $reader_giturl; $dsc->save("$dscfn.tmp") or die $!; my $changes = parsecontrol($changesfile,$changesfilewhat); @@ -3740,7 +3744,6 @@ sub push_mktags ($$ $$ $) { # to control the "tagger" (b) we can do remote signing my $authline = clogp_authline $clogp; my $delibs = join(" ", "",@deliberatelies); - my $declaredistro = access_nomdistro(); my $mktag = sub { my ($tw) = @_; @@ -56,8 +56,11 @@ server to authenticate pushes. Uploads made by dgit contain an additional field .B Dgit in the source package .dsc. (This is added by dgit push.) -This specifies a commit (an ancestor of the dgit/suite -branch) whose tree is identical to the unpacked source upload. +This specifies: a commit (an ancestor of the dgit/suite +branch) whose tree is identical to the unpacked source upload; +and the distro and suite to which the upload was made +(and a url, +in case the client seeing this .dsc does not know of that distro). Uploads not made by dgit are represented in git by commits which are synthesised by dgit. The tree of each such commit corresponds to the |