From: Ian Jackson Date: Sat, 15 Jul 2017 22:21:13 +0000 (+0100) Subject: dgit import: Right error message for missing files in .. X-Git-Tag: archive/debian/3.12~14 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=83af484ee17f5d18ee6a161b01aa0b546d8943cb dgit import: Right error message for missing files in .. Close examination of this code path reveals that: * The error is generated only if $there contains no slash. * This can only occur if $dscfn matches the first regexp, ie $dscfn is [./]../X in which case $there becomes X * So in this situation, $there is simply the dsc filename which is supposed to be in .. * What we should be testing is ../$f but that is $here which is what are trying to create and which we statted earlier and got ENOENT for. So this occurs when the dsc is in .. and a file it refers to is missing. Signed-off-by: Ian Jackson --- diff --git a/debian/changelog b/debian/changelog index 784269c1..eeaeb1ff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,7 @@ dgit (3.12~) unstable; urgency=medium look like series files, etc. Involves adding .patch to all generated patch filenames. * dgit import: Defend against broken symlinks in .. + * dgit import: Right error message for missing files in .. -- diff --git a/dgit b/dgit index a68bf19c..944de859 100755 --- a/dgit +++ b/dgit @@ -6363,7 +6363,7 @@ END fail "cannot import $dscfn which seems to be inside working tree!"; } $there =~ s#/+[^/]+$## or - fail "cannot import $dscfn which seems to not have a basename"; + fail "import $dscfn requires ../$f, but it does not exist"; $there .= "/$f"; symlink $there, $here or fail "symlink $there to $here: $!"; progress "made symlink $here -> $there";