1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-29 18:22:41 +01:00

Tighten up "arc land"

Summary:
Make sure on failure (restoreBranch()) we call `git submodule update --init --recursive` to handle all those purdy submodules. For the pushing step, wrap the push commands in the try / catch block so everything gets cleaned up nice if there's failure. BONUS - add --recursive to arc patch workflow to so nested submodules work correctly. (Crazy git users)

Fixes T3407, T2945.

Test Plan: I wasn't sure how to simulate a good "push" failure but I think this should work.

Reviewers: epriestley

Reviewed By: epriestley

CC: Korvin, aran

Maniphest Tasks: T2945, T3407

Differential Revision: https://secure.phabricator.com/D6885
This commit is contained in:
Bob Trahan 2013-09-05 12:45:59 -07:00
parent db3581b8fa
commit 67061480f9
2 changed files with 21 additions and 17 deletions

View file

@ -858,23 +858,23 @@ EOTEXT
private function push() { private function push() {
$repository_api = $this->getRepositoryAPI(); $repository_api = $this->getRepositoryAPI();
if ($this->isGit) { // these commands can fail legitimately (e.g. commit hooks)
$repository_api->execxLocal(
'commit -F %s',
$this->messageFile);
} else if ($this->isHg) {
// hg rebase produces a commit earlier as part of rebase
if (!$this->useSquash) {
$repository_api->execxLocal(
'commit --logfile %s',
$this->messageFile);
}
}
// We dispatch this event so we can run checks on the merged revision, right
// before it gets pushed out. It's easier to do this in arc land than to
// try to hook into git/hg.
try { try {
if ($this->isGit) {
$repository_api->execxLocal(
'commit -F %s',
$this->messageFile);
} else if ($this->isHg) {
// hg rebase produces a commit earlier as part of rebase
if (!$this->useSquash) {
$repository_api->execxLocal(
'commit --logfile %s',
$this->messageFile);
}
}
// We dispatch this event so we can run checks on the merged revision,
// right before it gets pushed out. It's easier to do this in arc land
// than to try to hook into git/hg.
$this->dispatchEvent( $this->dispatchEvent(
ArcanistEventType::TYPE_LAND_WILLPUSHREVISION, ArcanistEventType::TYPE_LAND_WILLPUSHREVISION,
array()); array());
@ -1064,6 +1064,10 @@ EOTEXT
$repository_api->execxLocal( $repository_api->execxLocal(
'checkout %s', 'checkout %s',
$this->oldBranch); $this->oldBranch);
if ($this->isGit) {
$repository_api->execxLocal(
'submodule update --init --recursive');
}
echo phutil_console_format( echo phutil_console_format(
"Switched back to {$this->branchType} **%s**.\n", "Switched back to {$this->branchType} **%s**.\n",
$this->oldBranch); $this->oldBranch);

View file

@ -694,7 +694,7 @@ EOTEXT
// in case there were any submodule changes involved // in case there were any submodule changes involved
$repository_api->execpassthru( $repository_api->execpassthru(
'submodule update --init'); 'submodule update --init --recursive');
if ($this->shouldCommit()) { if ($this->shouldCommit()) {
if ($bundle->getFullAuthor()) { if ($bundle->getFullAuthor()) {