summaryrefslogtreecommitdiff
path: root/dgit
diff options
context:
space:
mode:
Diffstat (limited to 'dgit')
-rwxr-xr-xdgit22
1 files changed, 14 insertions, 8 deletions
diff --git a/dgit b/dgit
index 149345d..b0c60c4 100755
--- a/dgit
+++ b/dgit
@@ -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 {