Hey! These docs are for version 2.8, which is no longer officially supported. Click here for the latest version, 2.18!

See [File arguments vs. target arguments](🔗) for the normal techniques for telling Pants what to run on.

See [Project introspection](🔗) for queries that you can run and then pipe into another Pants run, such as running over certain target types.

## Running over changed files with `--changed-since`

Because Pants understands Git, it can find which files have changed since a certain commit through the `--changed-since` option.

For example, to lint all uncommitted files, run:

To run against another branch, run:

By default, `--changed-since` will only run over files directly changed. Often, though, you will want to run over any [dependees](🔗) of those changed files, meaning any targets that depend on the changed files. Use ` --changed-dependees=direct` or ` --changed-dependees=transitive` for this:

Using a version control system other than Git?

Please message us on Slack or open a GitHub issue (see [Community](🔗)). We would be happy to look into adding support for your VCS, such as helping you with a PR to add support.

## Tags: annotating targets

Every target type has a field called `tags`, which allows you to add a sequence of strings. The strings can be whatever you'd like, such as `"integration_test"` or `"skip_lint"`.

You can then filter by tags with the global `--tag` [option](🔗), like this:

To exclude certain tags, prefix with a `-`:

You can even combine multiple includes and excludes:

## `--spec-files`

The global option `--spec-files` allows you to pass a file containing target addresses and/or file names/globs to Pants.

Each entry must be separated by a new line.

For example:

Tip: centralized allow/block lists

Whereas `tags` are useful for _decentralized_ allow/block lists, `--spec-files` is useful when you want to define one single list of targets or files.

## Piping to other Pants runs

To pipe a Pants run, use your shell's `|` pipe operator and `xargs`:

You can, of course, pipe multiple times:

Alternative: use `--spec-files`

Sometimes, you may want to reuse the output of a Pants run for multiple subsequent Pants runs. Rather than repeating `xargs` multiple times, you can generate a file through stdout redirection and `--spec-files`.

For example:

If you don't want to save the output to an actual file—such as to not pollute version control—you can use a variable and a named pipe: