diff options
Diffstat (limited to 'dgit')
-rwxr-xr-x | dgit | 22 |
1 files changed, 14 insertions, 8 deletions
@@ -5850,12 +5850,18 @@ END } } -sub unpack_playtree_mk_cd_work ($) { +sub unpack_playtree_need_cd_work ($) { my ($headref) = @_; - mkdir "work" or confess "$!"; - changedir "work"; - mktree_in_ud_here(); + # prep_ud() must have been called already. + if (!chdir "work") { + # Check in the filesystem because sometimes we run prep_ud + # in between multiple calls to unpack_playtree_need_cd_work. + confess "$!" unless $!==ENOENT; + mkdir "work" or confess "$!"; + changedir "work"; + mktree_in_ud_here(); + } runcmd @git, qw(reset -q --hard), $headref; } @@ -5904,7 +5910,7 @@ sub quilt_fixup_singlepatch ($$$) { # necessary to build the source package. unpack_playtree_linkorigs($upstreamversion, sub { }); - unpack_playtree_mk_cd_work($headref); + unpack_playtree_need_cd_work($headref); rmtree("debian/patches"); @@ -6026,7 +6032,7 @@ sub quilt_check_splitbrain_cache ($$) { "refs/$splitbraincache", $splitbrain_cachekey; if ($cachehit) { - unpack_playtree_mk_cd_work($headref); + unpack_playtree_need_cd_work($headref); my $saved = maybe_split_brain_save $headref, $cachehit, "cache-hit"; if ($cachehit ne $headref) { progress f_ "dgit view: found cached (%s)", $saved; @@ -6145,7 +6151,7 @@ END changedir '..'; - unpack_playtree_mk_cd_work($headref); + unpack_playtree_need_cd_work($headref); my $mustdeletepc=0; if (stat_exists ".pc") { @@ -6722,7 +6728,7 @@ sub build_source { unless ($split_brain) { my $upstreamversion = upstreamversion $version; unpack_playtree_linkorigs($upstreamversion, sub { }); - unpack_playtree_mk_cd_work($headref); + unpack_playtree_need_cd_work($headref); changedir '..'; } } else { |