|author||Ian Jackson <firstname.lastname@example.org>||2017-07-15 23:21:13 +0100|
|committer||Ian Jackson <email@example.com>||2017-07-15 23:21:14 +0100|
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 <firstname.lastname@example.org>
2 files changed, 2 insertions, 1 deletions
diff --git a/debian/changelog b/debian/changelog
index 784269c..eeaeb1f 100644
@@ -6,6 +6,7 @@ dgit (3.12~) unstable; urgency=medium
look like series files, etc. Involves adding .patch to all generated
* dgit import: Defend against broken symlinks in ..
+ * dgit import: Right error message for missing files in ..
@@ -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";