diff --git a/src/workflow/ArcanistLandWorkflow.php b/src/workflow/ArcanistLandWorkflow.php index 0dc6c58d..861cec5b 100644 --- a/src/workflow/ArcanistLandWorkflow.php +++ b/src/workflow/ArcanistLandWorkflow.php @@ -352,6 +352,7 @@ EOTEXT $rev_status = $this->revision['status']; $rev_id = $this->revision['id']; $rev_title = $this->revision['title']; + $rev_auxiliary = idx($this->revision, 'auxiliary', array()); if ($rev_status != ArcanistDifferentialRevisionStatus::ACCEPTED) { $ok = phutil_console_confirm( @@ -362,6 +363,42 @@ EOTEXT } } + if ($rev_auxiliary) { + $phids = idx($rev_auxiliary, 'phabricator:depends-on', array()); + + $dep_on_revs = $this->getConduit()->callMethodSynchronous( + 'differential.query', + array( + 'phids' => $phids, + 'status' => 'status-open', + )); + + $open_dep_revs = array(); + foreach ($dep_on_revs as $dep_on_rev) { + $dep_on_rev_id = $dep_on_rev['id']; + $dep_on_rev_title = $dep_on_rev['title']; + $dep_on_rev_status = $dep_on_rev['status']; + $open_dep_revs[$dep_on_rev_id] = $dep_on_rev_title; + } + + if (!empty($open_dep_revs)) { + $open_revs = array(); + foreach ($open_dep_revs as $id => $title) { + $open_revs[] = " - D".$id.": ".$title; + } + $open_revs = implode("\n", $open_revs); + + echo "Revision 'D{$rev_id}: {$rev_title}' depends ". + "on open revisions:\n\n"; + echo $open_revs; + + $ok = phutil_console_confirm("Continue anyway?"); + if (!$ok) { + throw new ArcanistUserAbortException(); + } + } + } + $message = $this->getConduit()->callMethodSynchronous( 'differential.getcommitmessage', array(