gbp-pq-rpm

&dhsection;

gbp-pq-rpm

Manage patches and development branches in Git

          &gbp-pq-rpm;
          &man.common.options.synopsis;
          --packaging-dir=DIRECTORY
          --spec-file=FILEPATH
          --upstream-tag=TAG-FORMAT
          --abbrev=num
          --force
          --[no-]drop
          --[no-]patch-numbers

            drop
            export
            import
            rebase
            switch
    	apply

## DESCRIPTION

&gbp-pq-rpm; helps in managing patches and development branch(es) for packages that are maintained with &gbp;. It designed to be used for packages that are maintained using the "orphan-packaging" model. &gbp-pq-rpm; has multiple subcommands, or actions, for working with the branches and patches.

&gbp-pq-rpm; makes it easy to do source code development on a separate development branch (patch-queue branch in Debian git-buildpackage terms). For example, if the packaging files would be stored in `master` the associated development branch would be `development/master`.

## ACTIONS

`import`

- Create a development (patch-queue) branch by applying all patches from the packaging branch on top of the upstream version. The patches must apply without fuzz.

`export`

- Export patches from the development branch into the packaging branch. It generates patches (one-per-commit) from the development branch and updates the spec file accordingly. It doesn't automatically commit the changes though - they need to verified and committed manually.

`rebase`

- Switch to the development branch and rebase it against the current upstream version (indicated in the spec file of the associated packaging branch).

`drop`

- Drop (delete) the development branch associated to the current branch. For example, you're on branch `foo` this would drop branch `development/foo`.

`apply`

- Add a single patch to the development branch - similar to using `git-am`.

`switch`

- Switch between the development branch and the associated packaging branch.

## OPTIONS

&man.common.options.description;

`--packaging-dir=``DIRECTORY`

- Subdirectory that contains the RPM packaging files.

`--spec-file=``FILEPATH`

- Relative path to the spec file to use. Special value `auto` causes &gbp; to search and guess. Other values cause the `--packaging-dir` option to be ignored: the directory of the spec file is used, instead.

`--upstream-tag=``TAG-FORMAT`

- Use this tag format when looking for tags of upstream versions, default is `upstream/%(version)s`.

`--abbrev=``NUM`

- When exporting a patch queue abbreviate commit, instead of showing the full 40-byte hexadecimal object name in header lines, show only a partial prefix of length `NUM`. This is useful when existing patches were not generated by &gbp-pq;.

`--force`

- Import even if the development (patch-queue) branch already exists. Only valid for the import action.

`--[no-]drop`

- Whether to drop (delete) the patch queue branch after a successful export.

`--[no-]patch-numbers`

- Whether the patch files should start with a number or not.

## META TAGS

When exporting patches from a patch-queue branch &gbp-pq-rpm; will look at the commit message for special tags it recognizes. All tags need to start at the first column and require at least one whitespace after the colon.

`Gbp-Rpm: Ignore`

- Ignores the commit, no patch is generated out of it.

`Gbp-Rpm: If <expression>`

- Conditional patch. Put patch inside "%if <expression>" in the spec file.

`Gbp-Rpm: IfArch<expression>`

- Conditional patch. Put patch inside "%ifarch <expression>" in the spec file.

For example, the following commit message:

          Fix around a problem in Fedora

          which is not applicable elsewhere.

          Gbp-Rpm: If 0%{?fedora}

Will result something like this in the spec file:

          # 0001-Fix-around-a-problem-in-Fedora.patch
          %if 0%{?fedora}
          %patch0 -p1
          %endif

## SEE ALSO

man.gbp.buildpackage.rpm, man.gbp.import.srpm, man.gbp.conf

## AUTHOR

&rpm-username; &rpm-email;