Skip to main content

git based patch manager

Project description

Git Queues

⚠️ 🪏 Work In Progress 🪏 ⚠️

This is currently a work in progress and doesn't do much yet.

Description

This is my second attempt to make a git-based patch queue tool.

It's similar to git-pq, Quilt, Stacked Git, TopGit, Mercurial Queues, and others.

The goal is to assist the user in composing, and maintaining a well-organized queue of patches against a baseline codebase.

Use cases

Personal Integration Branch

You have multiple topic branches in progress, at various levels of maturity. One branch may be a very early work in progress, another may be in the initial stages of build-and-test in the CI environment, another may be almost done code review and ready to merge. In order to anticipate merge conflicts, functional interactions, and for general convenience, you want to do all your local development builds on an integration branch with all your open work merged together. After changes are made to the topic branches, you want to easily update the integration branch and keep going.

Submission Queue

You have a long series of changes you want to push to an upstream project. The upstream, however does not accept long series of changes. Their code review process looks at one small patch at a time. As each patch goes through the review process, changes are made and the reset of the queue must be updated accordingly.

Long Term Patch Set

You're maintaining a set of patches against an upstream project. For whatever reason, most of these patches are never going to be merged upstream. You need to repeatedly rebase this patch set onto new versions of the project. Essentially, the patches are your source code. You would like to use a version control system to track changes to the patches.

But Why?

None of the existing tools do quite what I want. In particular, Git Queues has the following distinguishing characteristics

  • Queues can have multiple baselines.

  • A queue is a git branch. All queue information is stored in a single branch. There are no auxiliary refs, no information stored anywhere else. A queue can be pushed and pulled to remotes as an ordinary branch. There is no git queue push or git queue pull.

  • Each patch is a git commit. As much as possible, ordinary git commands are used to manipulate patches.

  • The commit history of a queue feels like a git commit history. That is, commits are user-curated checkpoints, with user-written commit messages. The history is not a detailed log of every micro-operation that was used to create a queue. The data model is as simple as possible. Git is a "stupid" content tracker, because it tracks versions of the content of a source directory. There is no specific representation in git to, for example, move a file. The contents of the file are simply moved to a new location. Git Queues aims to track the content of a patch series in the same spirit that Git tracks the content of a directory.

git-swap

git-swap can re-order commits like git rebase -i, but it is, in my opinion easier to use. In particular, conflicts must often be resolved twice when using rebase, but not with git-swap. git-swap reverses the order of two adjacent commits, while holding the final content constant.

git-queue

git-queue is manipulates a queue. A queue is a git branch with a baseline, which is specified in the .git-queue file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitq-0.0.4.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitq-0.0.4-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file gitq-0.0.4.tar.gz.

File metadata

  • Download URL: gitq-0.0.4.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.5 Darwin/24.6.0

File hashes

Hashes for gitq-0.0.4.tar.gz
Algorithm Hash digest
SHA256 6771f3690deafdae3be7d1cc1e37d6f57ce88bd12b15dbcd31634c9f538e3bff
MD5 d37e24236d746292fab1dd0bd9ffa9d0
BLAKE2b-256 a405ea2b2bf0cd4ad64de3fc55e189541c12034a55b0d9b44a72746dd6cc498c

See more details on using hashes here.

File details

Details for the file gitq-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: gitq-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 17.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.5 Darwin/24.6.0

File hashes

Hashes for gitq-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4bf701d8671e62fc54d9fc2fb01ea3c20befa5588847682d0fa12ee6b57750cb
MD5 c5042b4be0c455eec368c954f5dd1f39
BLAKE2b-256 c9cdd9ad24f6c490c46201fba8002b2f9fc94507be7eea41e23faca24a2a776f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page