TL;DR

Revup is a command-line tool that automates creating and managing multiple, related GitHub pull requests from a single upload. It supports stacked or relative commits, adds reviewers/labels from commit text, and includes features to reduce redundant CI and rebasing work.

What happened

Skydio publishes revup, a Python-based CLI that generates and maintains multiple independent branch chains and corresponding GitHub pull requests without modifying the developer's working tree. Developers mark commits with metadata such as Topic and Relative to indicate which commits become separate PRs and how they depend on one another; a single revup upload pushes those branches and opens the pull requests, each targeted at their intended base branch so they can be merged independently. The tool includes commands to amend or restack commits, detects when a patch content is unchanged to avoid unnecessary re-pushes, and annotates PRs with an auto-updating review graph and a patchsets table to help reviewers track related changes and upload history. Revup is configurable via per-repo and per-user config files and can be used with forks, reviewers, labels, and draft PR handling.

Why it matters

  • Reduces manual overhead when working on multiple interdependent changes by creating and tracking separate PRs from a single workflow.
  • Saves CI time and bandwidth by skipping uploads when rebased patches have not changed.
  • Improves reviewer visibility through an embedded review graph and patchset history in each pull request.
  • Supports common collaboration patterns: forks, reviewers, labels, assignees and draft PRs via commit metadata.

Key facts

  • Revup creates multiple independent chains of branches and manages GitHub pull requests for them without touching the working tree.
  • Commits are grouped into topics using a Topic tag; topics can be independent or marked Relative to target another topic's branch.
  • Rebase detection avoids re-pushing if the patch content is unchanged, reducing redundant CI runs.
  • Revup adds two automatic comments to PRs: a review graph linking related reviews and a patchsets table showing upload history and diffs.
  • Common operations include revup upload, revup amend (to modify an existing topic), and options for restacking instead of slow rebases.
  • Installation requires Python 3.8+ and Git 2.43+; supported OSes are Linux, macOS, and Windows (with limited testing).
  • Installable via pip (python3.8 -m pip install revup) or buildable from source using the project's Makefile.
  • Configuration is layered: command-line flags override ~/.revupconfig which overrides .revupconfig in a repo; repo config can set main branch names and release branch globs.
  • For repositories where you lack push access, revup can push to a fork while creating pull requests in the original project by specifying remote and fork names.
  • Revup is published by Skydio but is noted as not an officially supported Skydio product.

What to watch next

  • Wider testing and formal support for Windows beyond the 'limited testing' noted in the docs is not confirmed in the source.
  • Whether Skydio will change the project's support status (it is currently not an officially supported Skydio product) is not confirmed in the source.
  • Adoption by large open-source projects and integration with diverse CI setups is not confirmed in the source.

Quick glossary

  • Pull request: A request to merge changes from one branch into another in a version control system; used for code review and collaboration.
  • Rebase: A Git operation that moves or combines a sequence of commits to a new base commit, often used to keep a linear history.
  • Fork: A personal copy of someone else's repository that you can push to; commonly used to contribute when you don't have write access to the original.
  • Topic (in revup): A named grouping of commits indicated in commit messages that revup treats as a single pull request.
  • Patchset: A recorded upload or iteration of a change in a review system; revup tracks patchsets for PR history and diffs.

Reader FAQ

What does revup do?
It automates creating and managing multiple, related GitHub pull requests from commit metadata, handling branch creation, pushing, and PR maintenance.

How do I install revup?
The docs show installing via pip, for example: python3.8 -m pip install revup; you can also build from the project's source repository.

What are the system requirements?
Revup requires Python 3.8 or newer and Git 2.43 or newer; it is reported to work on Linux, macOS, and Windows (limited testing).

Is revup an officially supported Skydio product?
No — the project is published by Skydio but is explicitly not an officially supported Skydio product.

Can revup avoid redundant CI runs after rebases?
Yes. The tool detects when a rebased patch's content hasn't changed and will skip re-pushing to save CI cost.

Revup provides command-line tools that allow developers to iterate faster on parallel changes and reduce the overhead of creating and maintaining code reviews. Features Revup creates multiple independent chains of…

Sources

Related posts

By

Leave a Reply

Your email address will not be published. Required fields are marked *