# Welcome to rebase-helper
[![Github Actions build status](https://github.com/rebase-helper/rebase-helper/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/rebase-helper/rebase-helper/actions) [![Documentation build status](https://readthedocs.org/projects/rebase-helper/badge/?version=latest)](https://readthedocs.org/projects/rebase-helper) [![Container image build status](https://quay.io/repository/rebasehelper/rebase-helper/status)](https://quay.io/repository/rebasehelper/rebase-helper) [![PyPI version](https://img.shields.io/pypi/v/rebasehelper.svg)](https://pypi.org/project/rebasehelper) [![Project status](https://img.shields.io/pypi/status/rebasehelper.svg)](https://pypi.org/project/rebasehelper) [![Code Quality](https://api.codacy.com/project/badge/Grade/af059c941cd94f7aa557c3ae7ce75bb8)](https://www.codacy.com/app/rebase-helper/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.
## How to get it running?
**rebase-helper** is packaged in Fedora, so you can just install it with **dnf**.
If you wish to use the latest codebase, consult [installation instructions](https://rebase-helper.readthedocs.io/en/latest/user_guide/installation.html).
## How to use it?
After installation, execute **rebase-helper** from a directory containing SPEC file, sources and patches (usually cloned dist-git repository):
```bash
$ ls
foo-3.1.9.tar.xz foo.spec sources
```
Without any arguments or configuration **rebase-helper** will attempt to determine the latest upstream version automatically.
If that fails, or if you wish to rebase to some different version, you can specify it explicitly as an argument:
```bash
$ rebase-helper 3.1.10
```
or you can pass source tarball filename instead:
```bash
$ rebase-helper foo-3.1.10.tar.xz
```
For complete CLI reference see [usage](https://rebase-helper.readthedocs.io/en/latest/user_guide/usage.html).
Alternatively, you can run **rebase-helper** in a container:
`$ docker run -it -e PACKAGE=foo quay.io/rebasehelper/rebase-helper:latest`
See [container reference](https://rebase-helper.readthedocs.io/en/latest/user_guide/rebasing_in_container.html) for more information.
## What do I get from it?
**rebase-helper** always creates *rebase-helper-results* directory containing the following items:
| Path | Description |
|:--------------------- |:----------------------------------------------------------------- |
| *report.txt* | summary report with all important information |
| *changes.patch* | diff against original files, directly applicable to dist-git repo |
| *logs/* | log files of various verbosity levels |
| *rebased-sources/* | git repository with all modified files |
| *checkers/* | reports from individual checkers that were run |
| *old-build/* | logs and results of old (original) version build |
| *new-build/* | logs and results of new (rebased) version build |
## How does it work?
The following steps describe a rebase process:
- **Preparation**
- *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
- **Getting sources**
- old and new source tarballs are downloaded and extracted to *rebase-helper-workspace* directory
- old sources are downloaded from lookaside cache if possible
- **Downstream patches**
- 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*
- **Build**
- old and new source RPMs are created and built with selected build tool
- old SRPM and RPMs can also be downloaded from Koji to speed up the rebase
- **Comparison**
- multiple checker tools are run against both sets of packages and their output is stored in *rebase-helper-results/checkers* directory
- **Cleanup**
- *rebase-helper-workspace* directory is removed
## Videos
A talk about **rebase-helper** at DevConf.CZ 2020 given by František Nečas:
[![Rebasing RPM packages with rebase-helper - DevConf.CZ 2020](https://img.youtube.com/vi/xI6edOXqk8U/0.jpg)](https://www.youtube.com/watch?v=xI6edOXqk8U)
Another presentation, this time from DevConf.CZ 2016, by Petr Hráček and Tomáš Hozza:
[![Rebase-helper and Upstream Release Monitoring - DevConf.CZ 2016](https://img.youtube.com/vi/Y-5Qiwaujd8/0.jpg)](https://www.youtube.com/watch?v=Y-5Qiwaujd8)
Raw data
{
"_id": null,
"home_page": "https://github.com/rebase-helper/rebase-helper",
"name": "rebasehelper",
"maintainer": "Nikola Forr\u00f3",
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "nforro@redhat.com",
"keywords": "rebase, packaging, rpm, spec",
"author": "Petr Hr\u00e1\u010dek",
"author_email": "phracek@redhat.com",
"download_url": "https://files.pythonhosted.org/packages/33/cf/4114d1a55a73f6bbc91e5570634620c6b01e4328ccb3115d77766911fdb3/rebasehelper-0.29.2.tar.gz",
"platform": null,
"description": "# Welcome to rebase-helper\n\n[![Github Actions build status](https://github.com/rebase-helper/rebase-helper/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/rebase-helper/rebase-helper/actions) [![Documentation build status](https://readthedocs.org/projects/rebase-helper/badge/?version=latest)](https://readthedocs.org/projects/rebase-helper) [![Container image build status](https://quay.io/repository/rebasehelper/rebase-helper/status)](https://quay.io/repository/rebasehelper/rebase-helper) [![PyPI version](https://img.shields.io/pypi/v/rebasehelper.svg)](https://pypi.org/project/rebasehelper) [![Project status](https://img.shields.io/pypi/status/rebasehelper.svg)](https://pypi.org/project/rebasehelper) [![Code Quality](https://api.codacy.com/project/badge/Grade/af059c941cd94f7aa557c3ae7ce75bb8)](https://www.codacy.com/app/rebase-helper/rebase-helper)\n\nThere are several steps that need to be done when rebasing a package. The goal of **rebase-helper** is to automate most of these steps.\n\n## How to get it running?\n\n**rebase-helper** is packaged in Fedora, so you can just install it with **dnf**.\n\nIf you wish to use the latest codebase, consult [installation instructions](https://rebase-helper.readthedocs.io/en/latest/user_guide/installation.html).\n\n## How to use it?\n\nAfter installation, execute **rebase-helper** from a directory containing SPEC file, sources and patches (usually cloned dist-git repository):\n\n```bash\n$ ls\nfoo-3.1.9.tar.xz foo.spec sources\n```\n\nWithout any arguments or configuration **rebase-helper** will attempt to determine the latest upstream version automatically.\nIf that fails, or if you wish to rebase to some different version, you can specify it explicitly as an argument:\n\n```bash\n$ rebase-helper 3.1.10\n```\n\nor you can pass source tarball filename instead:\n\n```bash\n$ rebase-helper foo-3.1.10.tar.xz\n```\n\nFor complete CLI reference see [usage](https://rebase-helper.readthedocs.io/en/latest/user_guide/usage.html).\n\nAlternatively, you can run **rebase-helper** in a container:\n\n`$ docker run -it -e PACKAGE=foo quay.io/rebasehelper/rebase-helper:latest`\n\nSee [container reference](https://rebase-helper.readthedocs.io/en/latest/user_guide/rebasing_in_container.html) for more information.\n\n## What do I get from it?\n\n**rebase-helper** always creates *rebase-helper-results* directory containing the following items:\n\n| Path | Description |\n|:--------------------- |:----------------------------------------------------------------- |\n| *report.txt* | summary report with all important information |\n| *changes.patch* | diff against original files, directly applicable to dist-git repo |\n| *logs/* | log files of various verbosity levels |\n| *rebased-sources/* | git repository with all modified files |\n| *checkers/* | reports from individual checkers that were run |\n| *old-build/* | logs and results of old (original) version build |\n| *new-build/* | logs and results of new (rebased) version build |\n\n## How does it work?\n\nThe following steps describe a rebase process:\n\n- **Preparation**\n\n - *rebase-helper-workspace* and *rebase-helper-results* directories are created\n - original SPEC file is copied to *rebase-helper-results/rebased-sources* directory and its Version tag is modified\n\n\n- **Getting sources**\n\n - old and new source tarballs are downloaded and extracted to *rebase-helper-workspace* directory\n - old sources are downloaded from lookaside cache if possible\n\n\n- **Downstream patches**\n\n - new git repository is initialized and the old sources are extracted and commited\n - each downstream patch is applied and changes introduced by it are commited\n - new sources are extracted and added as a remote repository\n - `git-rebase` is used to rebase the commits on top of new sources\n - original patches are modified/deleted accordingly\n - resulting files are stored in *rebase-helper-results/rebased-sources*\n - diff against original files is saved to *rebase-helper-results/changes.patch*\n\n\n- **Build**\n\n - old and new source RPMs are created and built with selected build tool\n - old SRPM and RPMs can also be downloaded from Koji to speed up the rebase\n\n\n- **Comparison**\n\n - multiple checker tools are run against both sets of packages and their output is stored in *rebase-helper-results/checkers* directory\n\n\n- **Cleanup**\n\n - *rebase-helper-workspace* directory is removed\n\n## Videos\n\nA talk about **rebase-helper** at DevConf.CZ 2020 given by Franti\u0161ek Ne\u010das:\n\n[![Rebasing RPM packages with rebase-helper - DevConf.CZ 2020](https://img.youtube.com/vi/xI6edOXqk8U/0.jpg)](https://www.youtube.com/watch?v=xI6edOXqk8U)\n\nAnother presentation, this time from DevConf.CZ 2016, by Petr Hr\u00e1\u010dek and Tom\u00e1\u0161 Hozza:\n\n[![Rebase-helper and Upstream Release Monitoring - DevConf.CZ 2016](https://img.youtube.com/vi/Y-5Qiwaujd8/0.jpg)](https://www.youtube.com/watch?v=Y-5Qiwaujd8)\n",
"bugtrack_url": null,
"license": "GPLv2+",
"summary": "This tool helps you rebase your package to the latest version.",
"version": "0.29.2",
"project_urls": {
"Bug Tracker": "https://github.com/rebase-helper/rebase-helper/issues",
"Documentation": "https://rebase-helper.readthedocs.io",
"Homepage": "https://github.com/rebase-helper/rebase-helper",
"Source Code": "https://github.com/rebase-helper/rebase-helper"
},
"split_keywords": [
"rebase",
" packaging",
" rpm",
" spec"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "228d9b8a66f0ef7dadf543a78be7d81f1dd1e668ed287bb46fb323d06250ad2c",
"md5": "116c4d08651688e60624f37bc00fe155",
"sha256": "2f4c9baaa8c14cdaa7d472d3b8213371db31e0c2a051307ca866c4b94b23176d"
},
"downloads": -1,
"filename": "rebasehelper-0.29.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "116c4d08651688e60624f37bc00fe155",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 167524,
"upload_time": "2024-08-03T08:43:03",
"upload_time_iso_8601": "2024-08-03T08:43:03.237211Z",
"url": "https://files.pythonhosted.org/packages/22/8d/9b8a66f0ef7dadf543a78be7d81f1dd1e668ed287bb46fb323d06250ad2c/rebasehelper-0.29.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "33cf4114d1a55a73f6bbc91e5570634620c6b01e4328ccb3115d77766911fdb3",
"md5": "6d7239bc26d45fbed4bf4d4537bfb054",
"sha256": "a5731626332227ce92525b6d7ee62ae08f8216d4f2d698afff1f48c1c49c3e66"
},
"downloads": -1,
"filename": "rebasehelper-0.29.2.tar.gz",
"has_sig": false,
"md5_digest": "6d7239bc26d45fbed4bf4d4537bfb054",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 1900270,
"upload_time": "2024-08-03T08:43:05",
"upload_time_iso_8601": "2024-08-03T08:43:05.030549Z",
"url": "https://files.pythonhosted.org/packages/33/cf/4114d1a55a73f6bbc91e5570634620c6b01e4328ccb3115d77766911fdb3/rebasehelper-0.29.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-03 08:43:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rebase-helper",
"github_project": "rebase-helper",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "rebasehelper"
}