1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-25 16:22:42 +01:00

Restore "arc patch D12345" syntax

Summary:
I only dropped this because it's slightly inconvient to accommodate, but
empirically it's pretty confusing to users (who often use --diff 12345 when they
mean --revision 12345).

Test Plan:
Ran "arc patch D45", "arc patch --revision 45", "arc help patch"

Reviewed By: tuomaspelkonen
Reviewers: tuomaspelkonen, jungejason, aran
CC: aran, tuomaspelkonen
Differential Revision: 241
This commit is contained in:
epriestley 2011-05-06 12:08:57 -07:00
parent 1fdead8c20
commit caed8a2830

View file

@ -23,17 +23,21 @@
*/ */
final class ArcanistPatchWorkflow extends ArcanistBaseWorkflow { final class ArcanistPatchWorkflow extends ArcanistBaseWorkflow {
const SOURCE_BUNDLE = 'bundle'; const SOURCE_BUNDLE = 'bundle';
const SOURCE_PATCH = 'patch'; const SOURCE_PATCH = 'patch';
const SOURCE_REVISION = 'revision'; const SOURCE_REVISION = 'revision';
const SOURCE_DIFF = 'diff'; const SOURCE_DIFF = 'diff';
private $source; private $source;
private $sourceParam; private $sourceParam;
public function getCommandHelp() { public function getCommandHelp() {
return phutil_console_format(<<<EOTEXT return phutil_console_format(<<<EOTEXT
**patch** __source__ **patch** __D12345__
**patch** __--revision__ __revision_id__
**patch** __--diff__ __diff_id__
**patch** __--patch__ __file__
**patch** __--arcbundle__ __bundlefile__
Supports: git, svn Supports: git, svn
Apply the changes in a Differential revision, patchfile, or arc Apply the changes in a Differential revision, patchfile, or arc
bundle to the working copy. bundle to the working copy.
@ -48,7 +52,8 @@ EOTEXT
'paramtype' => 'complete', 'paramtype' => 'complete',
'help' => 'help' =>
"Apply changes from a Differential revision, using the most recent ". "Apply changes from a Differential revision, using the most recent ".
"diff that has been attached to it.", "diff that has been attached to it. You can run 'arc patch D12345' ".
"as a shorthand for this.",
), ),
'diff' => array( 'diff' => array(
'param' => 'diff_id', 'param' => 'diff_id',
@ -70,6 +75,7 @@ EOTEXT
'help' => 'help' =>
"Apply changes from a git patchfile or unified patchfile.", "Apply changes from a git patchfile or unified patchfile.",
), ),
'*' => 'name',
); );
} }
@ -93,21 +99,35 @@ EOTEXT
$requested++; $requested++;
} }
$use_revision_id = null;
if ($this->getArgument('name')) {
$namev = $this->getArgument('name');
if (count($namev) > 1) {
throw new ArcanistUsageException("Specify at most one revision name.");
}
$source = self::SOURCE_REVISION;
$requested++;
$use_revision_id = $this->normalizeRevisionID(head($namev));
}
if ($requested === 0) { if ($requested === 0) {
throw new ArcanistUsageException( throw new ArcanistUsageException(
"Specify one of '--revision <revision_id>' (to select the current ". "Specify one of 'D12345', '--revision <revision_id>' (to select the ".
"changes attached to a Differential revision), '--diff <diff_id>' ". "current changes attached to a Differential revision), ".
"(to select a specific, out-of-date diff or a diff which is not ". "'--diff <diff_id>' (to select a specific, out-of-date diff or a ".
"attached to a revision), '--arcbundle <file>' or '--patch <file>' ". "diff which is not attached to a revision), '--arcbundle <file>' ".
"to choose a patch source."); "or '--patch <file>' to choose a patch source.");
} else if ($requested > 1) { } else if ($requested > 1) {
throw new ArcanistUsageException( throw new ArcanistUsageException(
"Options '--revision', '--diff', '--arcbundle' and '--patch' are ". "Options 'D12345', '--revision', '--diff', '--arcbundle' and ".
"not compatible. Choose exactly one patch source."); "'--patch' are not compatible. Choose exactly one patch source.");
} }
$this->source = $source; $this->source = $source;
$this->sourceParam = $this->getArgument($source); $this->sourceParam = nonempty(
$use_revision_id,
$this->getArgument($source));
} }
public function requiresConduit() { public function requiresConduit() {