# Welcome to rebase-helper¶

There are several steps that need to be done when rebasing a package. The goal of rebase-helper is to automate most of these steps.

## General workflow¶

• rebase-helper-workspace and rebase-helper-results directories are created
• original SPEC file is copied to rebase-helper-results/rebased-sources directory and its Version tag is modified
• old and new source tarballs are downloaded and extracted to rebase-helper-workspace directory
• downstream patches are rebased on top of new sources using git-rebase, resulting modified patches are saved to rebase-helper-results/rebased-sources directory
• old and new source RPMs are created and built with selected build tool
• multiple checker tools are run against both sets of packages and their output is stored in rebase-helper-results/checkers directory
• rebase-helper-workspace directory is removed

## Patch rebasing workflow¶

• new git repository is initialized and the old sources are extracted and commited
• each downstream patch is applied and changes introduced by it are commited
• new sources are extracted and added as a remote repository
• git-rebase is used to rebase the commits on top of new sources
• original patches are modified/deleted accordingly
• resulting files are stored in rebase-helper-results/rebased-sources
• diff against original files is saved to rebase-helper-results/changes.patch

## How to run rebase-helper¶

Execute rebase-helper from a directory containing SPEC file, sources and patches (usually cloned dist-git repository).

There are two ways how to specify the new version. You can pass it to rebase-helper directly, e.g.:

rebase-helper 3.1.10

or you can let rebase-helper determine it from the new version tarball, e.g.:

rebase-helper foo-4.2.tar.gz

Starting with rebase-helper 0.10.0 you don’t have to specify the new version at all, and rebase-helper will attempt to determine it automatically using one of available versioneers.

For complete CLI reference see usage.