Usage#

git-pw#

git-pw is a tool for integrating Git with Patchwork.

git-pw can interact with individual patches, complete patch series, and customized bundles. The three major subcommands are patch, bundle, and series.

The git-pw utility is a wrapper which makes REST calls to the Patchwork service. To use git-pw, you must set up your environment by configuring your Patchwork server URL and either an API token or a username and password. To configure the server URL, run:

git config pw.server http://pw.server.com/path/to/patchwork

To configure the token, run:

git config pw.token token

Alternatively, you can pass these options via command line parameters or environment variables.

For more information on any of the commands, simply pass --help to the appropriate command.

git-pw [OPTIONS] COMMAND [ARGS]...

Options

--debug#

Output more information about what’s going on.

--token <TOKEN>#

Authentication token. Defaults to the value of ‘git config pw.token’.

--username <USERNAME>#

Authentication username. Defaults to the value of ‘git config pw.username’.

--password <PASSWORD>#

Authentication password. Defaults to the value of ‘git config pw.password’.

--server <SERVER>#

Patchwork server address/hostname. Defaults to the value of ‘git config pw.server’.

--project <PROJECT>#

Patchwork project. Defaults to the value of ‘git config pw.project’.

--version#

Show the version and exit.

Environment variables

PW_TOKEN

Provide a default for --token

PW_USERNAME

Provide a default for --username

PW_PASSWORD

Provide a default for --password

PW_SERVER

Provide a default for --server

PW_PROJECT

Provide a default for --project

bundle#

Interact with bundles.

Bundles are custom, user-defined groups of patches. Bundles can be used to keep patch lists, preserving order, for future inclusion in a tree. There’s no restriction of number of patches and they don’t even need to be in the same project. A single patch also can be part of multiple bundles at the same time. An example of Bundle usage would be keeping track of the Patches that are ready for merge to the tree.

git-pw bundle [OPTIONS] COMMAND [ARGS]...

add#

Add one or more patches to a bundle.

Append the provided PATCH_IDS to bundle BUNDLE_ID.

Requires API version 1.2 or greater.

git-pw bundle add [OPTIONS] BUNDLE_ID PATCH_IDS...

Options

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

BUNDLE_ID#

Required argument

PATCH_IDS#

Required argument(s)

apply#

Apply bundle.

Apply a bundle locally using the ‘git-am’ command. Any additional ARGS provided will be passed to the ‘git-am’ command.

git-pw bundle apply [OPTIONS] BUNDLE_ID [ARGS]...

Arguments

BUNDLE_ID#

Required argument

ARGS#

Optional argument(s)

create#

Create a bundle.

Create a bundle with the given NAME and patches from PATCH_ID.

Requires API version 1.2 or greater.

git-pw bundle create [OPTIONS] NAME PATCH_IDS...

Options

--public, --private#

Allow other users to view this bundle. If private, only you will be able to see this bundle.

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

NAME#

Required argument

PATCH_IDS#

Required argument(s)

delete#

Delete a bundle.

Delete bundle BUNDLE_ID.

Requires API version 1.2 or greater.

git-pw bundle delete [OPTIONS] BUNDLE_ID

Options

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

BUNDLE_ID#

Required argument

download#

Download bundle in mbox format.

Download a bundle but do not apply it. OUTPUT is optional and can be an output full file path or a directory or - to output to stdout. If OUTPUT is not provided, the output path will be automatically chosen.

git-pw bundle download [OPTIONS] BUNDLE_ID [OUTPUT]

Arguments

BUNDLE_ID#

Required argument

OUTPUT#

Optional argument

list#

List bundles.

List bundles on the Patchwork instance.

git-pw bundle list [OPTIONS] [NAME]

Options

--owner <OWNER>#

Show only bundles with these owners. Should be an email, name or ID. Private bundles of other users will not be shown.

--sort <FIELD>#

Sort output on given field.

Options:

id | -id | name | -name

--page <PAGE>#

Page to retrieve items from. This is influenced by the size of LIMIT.

--limit <LIMIT>#

Maximum number of items to show.

-c, --column <COLUMN>#

Columns to be included in output.

Options:

ID | Name | Owner | Public

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

NAME#

Optional argument

remove#

Remove one or more patches from a bundle.

Remove the provided PATCH_IDS to bundle BUNDLE_ID.

Requires API version 1.2 or greater.

git-pw bundle remove [OPTIONS] BUNDLE_ID PATCH_IDS...

Options

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

BUNDLE_ID#

Required argument

PATCH_IDS#

Required argument(s)

show#

Show information about bundle.

Retrieve Patchwork metadata for a bundle.

git-pw bundle show [OPTIONS] BUNDLE_ID

Options

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

BUNDLE_ID#

Required argument

update#

Update a bundle.

Update bundle BUNDLE_ID. If PATCH_IDs are specified, this will overwrite all patches in the bundle. Use ‘bundle add’ and ‘bundle remove’ to add or remove patches.

Requires API version 1.2 or greater.

git-pw bundle update [OPTIONS] BUNDLE_ID

Options

--name <name>#
--patch <patch_ids>#

Add the specified patch(es) to the bundle.

--public, --private#

Allow other users to view this bundle. If private, only you will be able to see this bundle.

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

BUNDLE_ID#

Required argument

patch#

Interact with patches.

Patches are the central object in Patchwork structure. A patch contains both a diff and some metadata, such as the name, the description, the author, the version of the patch etc. Patchwork stores not only the patch itself but also various metadata associated with the email that the patch was parsed from, such as the message headers or the date the message itself was received.

git-pw patch [OPTIONS] COMMAND [ARGS]...

apply#

Apply patch.

Apply a patch locally using the ‘git-am’ command. Any additional ARGS provided will be passed to the ‘git-am’ command.

git-pw patch apply [OPTIONS] PATCH_ID [ARGS]...

Options

--series <SERIES>#

Series to include dependencies from. Defaults to latest.

--deps, --no-deps#

When applying the patch, include series dependencies if available. Dependencies are retrieved from the most recent series by default. Defaults to the value of ‘git config pw applyPatchDeps’ else ‘true’.

Arguments

PATCH_ID#

Required argument

ARGS#

Optional argument(s)

download#

Download patch in diff or mbox format.

Download a patch but do not apply it. OUTPUT is optional and can be an output file path or a directory or - to output to stdout. If OUTPUT is not provided, the output path will be automatically chosen.

git-pw patch download [OPTIONS] PATCH_ID [OUTPUT]

Options

--diff#

Show patch in diff format.

--mbox#

Show patch in mbox format.

Arguments

PATCH_ID#

Required argument

OUTPUT#

Optional argument

list#

List patches.

List patches on the Patchwork instance.

git-pw patch list [OPTIONS] [NAME]

Options

--state <STATE>#

Show only patches matching these states. Should be slugified representations of states. The available states are instance dependant.

--submitter <SUBMITTER>#

Show only patches by these submitters. Should be an email, name or ID.

--delegate <DELEGATE>#

Show only patches with these delegates. Should be an email or username.

--hash <HASH>#

Show only patches with these hashes.

--archived#

Include patches that are archived.

--before <BEFORE>#

Show only items before a given date in ISO 8601 format

--since <SINCE>#

Show only items since a given date in ISO 8601 format

--sort <FIELD>#

Sort output on given field.

Options:

id | -id | name | -name | date | -date

--page <PAGE>#

Page to retrieve items from. This is influenced by the size of LIMIT.

--limit <LIMIT>#

Maximum number of items to show.

-c, --column <COLUMN>#

Columns to be included in output.

Options:

ID | Date | Name | Submitter | State | Archived | Delegate

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

NAME#

Optional argument

show#

Show information about patch.

Retrieve Patchwork metadata for a patch.

git-pw patch show [OPTIONS] PATCH_ID

Options

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

PATCH_ID#

Required argument

update#

Update one or more patches.

Updates one or more Patches on the Patchwork instance. Some operations may require admin or maintainer permissions.

git-pw patch update [OPTIONS] PATCH_IDS...

Options

--commit-ref <COMMIT_REF>#

Set the patch commit reference hash

--state <STATE>#

Set the patch state. Should be a slugified representation of a state. The available states are instance dependant and can be configured using ‘git config pw.states’.

Options:

new | under-review | accepted | rejected | rfc | not-applicable | changes-requested | awaiting-upstream | superseded | deferred

--delegate <DELEGATE>#

Set the patch delegate. Should be unique user identifier: either a username or a user’s email address.

--archived <ARCHIVED>#

Set the patch archived state.

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

PATCH_IDS#

Required argument(s)

series#

Interact with series.

Series are groups of patches, along with an optional cover letter. Series are mostly dumb containers, though they also contain some metadata themselves, such as a version (which is inherited by the patches and cover letter) and a count of the number of patches found in the series.

git-pw series [OPTIONS] COMMAND [ARGS]...

apply#

Apply series.

Apply a series locally using the ‘git-am’ command. Any additional ARGS provided will be passed to the ‘git-am’ command.

git-pw series apply [OPTIONS] SERIES_ID [ARGS]...

Arguments

SERIES_ID#

Required argument

ARGS#

Optional argument(s)

download#

Download series in mbox format.

Download a series but do not apply it. OUTPUT is optional and can be an output path or - to output to stdout. If OUTPUT is not provided, the output path will be automatically chosen.

git-pw series download [OPTIONS] SERIES_ID [OUTPUT]

Options

--separate#

Download each series patch to a separate file

--combined#

Download all series patches to one file

Arguments

SERIES_ID#

Required argument

OUTPUT#

Optional argument

list#

List series.

List series on the Patchwork instance.

git-pw series list [OPTIONS] [NAME]

Options

--submitter <SUBMITTER>#

Show only series by these submitters. Should be an email, name or ID.

--before <BEFORE>#

Show only items before a given date in ISO 8601 format

--since <SINCE>#

Show only items since a given date in ISO 8601 format

--sort <FIELD>#

Sort output on given field.

Options:

id | -id | name | -name | date | -date

--page <PAGE>#

Page to retrieve items from. This is influenced by the size of LIMIT.

--limit <LIMIT>#

Maximum number of items to show.

-c, --column <COLUMN>#

Columns to be included in output.

Options:

ID | Date | Name | Version | Submitter

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

NAME#

Optional argument

show#

Show information about series.

Retrieve Patchwork metadata for a series.

git-pw series show [OPTIONS] SERIES_ID

Options

-f, --format <fmt>#

Output format. Defaults to the value of ‘git config pw.format’ else ‘table’.

Options:

simple | table | csv | yaml

Arguments

SERIES_ID#

Required argument