From 19c2d673555201bf2bf6891cdd69236b1e599fb0 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 8 Jan 2017 00:03:53 +0000 Subject: [PATCH] dgit: dsc Dgit field handling: Parse additional data So far we don't do much with it, so this akes no change except to messages. Signed-off-by: Ian Jackson --- Debian/Dgit.pm | 3 ++- dgit | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index 5a7b59d7..62945874 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -50,7 +50,7 @@ BEGIN { git_get_ref git_for_each_ref git_for_each_tag_referring is_fast_fwd $package_re $component_re $deliberately_re - $distro_re + $distro_re $versiontag_re $branchprefix initdebug enabledebug enabledebuglevel printdebug debugcmd @@ -67,6 +67,7 @@ our $package_re = '[0-9a-z][-+.0-9a-z]*'; our $component_re = '[0-9a-zA-Z][-+.0-9a-zA-Z]*'; our $deliberately_re = "(?:TEST-)?$package_re"; our $distro_re = $component_re; +our $versiontag_re = qr{[-+.\%_0-9a-zA-Z/]+}; our $branchprefix = 'dgit'; # policy hook exit status bits diff --git a/dgit b/dgit index eb6fb9cd..7d2dd851 100755 --- a/dgit +++ b/dgit @@ -1683,6 +1683,7 @@ sub create_remote_git_repo () { } our ($dsc_hash,$lastpush_mergeinput); +our ($dsc_distro, $dsc_hint_tag, $dsc_hint_url); our $ud = '.git/dgit/unpack'; @@ -2712,8 +2713,15 @@ sub parse_dsc_field ($$) { } if (!defined $f) { progress "$what: NO git hash"; - } elsif ($f =~ m/^\w+/) { + } elsif (($dsc_hash, $dsc_distro, $dsc_hint_tag, $dsc_hint_url) + = $f =~ m/^(\w+) ($distro_re) ($versiontag_re) (\S+)(?:\s|$)/) { + progress "$what: specified git info ($dsc_distro)"; + $dsc_hint_tag = [ $dsc_hint_tag ]; + } elsif ($f =~ m/^\w+\s*$/) { $dsc_hash = $&; + $dsc_distro //= 'debian'; + $dsc_hint_tag = [ debiantags +(getfield $dsc, 'Version'), + $dsc_distro ]; progress "$what: specified git hash"; } else { fail "$what: invalid Dgit info"; -- 2.30.2