summaryrefslogtreecommitdiff
path: root/Debian/Dgit.pm
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2015-08-16 13:30:01 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2015-08-16 13:30:01 +0100
commit9acb31a971d4f653836bbcf07410f51d3f80dbdd (patch)
treee9ae76490fea1187410522c1a4974e3fda9f84ff /Debian/Dgit.pm
parentab500fe2332b6ad9af0baedd50440331c0b83492 (diff)
If a .orig in .. is a symlink, hardlink the link target into our private unpack directory, rather than the link itself (since latter won't work if the symlink is relative).
Diffstat (limited to 'Debian/Dgit.pm')
-rw-r--r--Debian/Dgit.pm12
1 files changed, 11 insertions, 1 deletions
diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm
index ac44b9a..fa85374 100644
--- a/Debian/Dgit.pm
+++ b/Debian/Dgit.pm
@@ -17,7 +17,8 @@ BEGIN {
@ISA = qw(Exporter);
@EXPORT = qw(setup_sigwarn
debiantag server_branch server_ref
- stat_exists fail ensuredir executable_on_path
+ stat_exists link_ltarget
+ fail ensuredir executable_on_path
waitstatusmsg failedcmd
cmdoutput cmdoutput_errok
git_rev_parse git_get_ref git_for_each_ref
@@ -219,6 +220,15 @@ sub cmdoutput {
return $d;
}
+sub link_ltarget ($$) {
+ my ($old,$new) = @_;
+ lstat $old or return undef;
+ if (-l _) {
+ $old = cmdoutput qw(realpath --), $old;
+ }
+ link $old, $new or die "link $old $new: $!";
+}
+
sub git_rev_parse ($) {
return cmdoutput qw(git rev-parse), "$_[0]~0";
}