phacility/phabricator · warning · PhutilArgumentUsageException

Specify which steps to reparse with "--message", "--change",

Error message

Specify which steps to reparse with "--message", "--change", and/or "--publish"; or "--importing" to run all missing steps.

What it means

reparse must be told which parsing steps to run: at least one of `--message`, `--change`, `--publish`, or `--importing` (run all steps still missing). A subject alone (commit or `--all`) with no step selection is a no-op, so the workflow exits with this PhutilArgumentUsageException.

Source

Thrown at src/applications/repository/management/PhabricatorRepositoryManagementReparseWorkflow.php:122

          "All from repo: %s\n".
          "Commit(s) to reparse: %s",
          $all_from_repo,
          $commits));
    }

    $any_step = ($reparse_message || $reparse_change || $reparse_publish);

    if ($any_step && $importing) {
      throw new PhutilArgumentUsageException(
        pht(
          'Choosing steps with "--importing" conflicts with flags which '.
          'select specific steps.'));
    } else if ($any_step) {
      // OK.
    } else if ($importing) {
      // OK.
    } else if (!$any_step && !$importing) {
      throw new PhutilArgumentUsageException(
        pht(
          'Specify which steps to reparse with "--message", "--change", '.
          'and/or "--publish"; or "--importing" to run all missing steps.'));
    }

    $min_timestamp = false;
    if ($min_date) {
      $min_timestamp = strtotime($min_date);

      if (!$all_from_repo) {
        throw new PhutilArgumentUsageException(
          pht(
            'You must use "--all" if you specify "--min-date".'));
      }

      // previous to PHP 5.1.0 you would compare with -1, instead of false
      if (false === $min_timestamp) {
        throw new PhutilArgumentUsageException(

View on GitHub (pinned to 5720a38cfe)

Solutions

  1. Add the step(s): `--message` to reparse commit messages, `--change` for change detection, `--publish` for publishing, or `--importing` to run every incomplete step.
  2. Use `./bin/repository reparse --help` to confirm flag names before running.

Example fix

# before
./bin/repository reparse --all R
# Usage exception: Specify which steps to reparse with "--message", "--change", and/or "--publish"...

# after
./bin/repository reparse --all R --message --change
# or complete unfinished import steps
./bin/repository reparse --all R --importing
Defensive patterns

Strategy: validation

Validate before calling

# Require at least one step selector
[ "$MSG" = 1 ] || [ "$CHANGE" = 1 ] || [ "$PUBLISH" = 1 ] || [ "$IMPORTING" = 1 ] || {
  echo "reparse needs --message/--change/--publish or --importing" >&2; exit 2;
}
./bin/repository reparse --all "$REPO" ${MSG:+--message} ${CHANGE:+--change} ${PUBLISH:+--publish} ${IMPORTING:+--importing}

Prevention

When it happens

Trigger: Running `./bin/repository reparse --all R` or `./bin/repository reparse <commit>` with no step flags at all (`$any_step` and `$importing` both false).

Common situations: First-time use assuming reparse does 'everything' by default; long command lines where the trailing step flag was accidentally dropped.

Related errors


AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21). Data as JSON: /api/errors/6a4a7febb56f25d6. Report an issue: GitHub.