Skip to content

kp2pml30/git-third-party

Repository files navigation

Git third party

Patch third-party libraries without forking them.

standard-readme compliant License: GPL v3

Background

git-third-party is a small zero-dependency utility that is an alternative to git-submodules and git-subtree. It stores only the delta (your changes) inside your tree, not the full vendored source.

It is not oriented for highly concurrent modification of third-party tools by multiple users.

Install

With Nix (flakes):

nix profile install github:kp2pml30/git-third-party

Or just drop the single script on your PATH — it needs only python3 and git:

curl -o ~/.local/bin/git-third-party https://raw.githubusercontent.com/kp2pml30/git-third-party/main/git-third-party
chmod +x ~/.local/bin/git-third-party

Usage

# add a third-party repository
git-third-party add third-party/RustPython https://github.com/RustPython/RustPython.git a13b99642b0bc13ca89d01768a7ddbec18fe8219
# ^ git-third-party add <relative path> <repository url> <commit hash>

# now modify it as a regular repository, and commit your changes

# save patches to push to your origin
git-third-party save third-party/RustPython
# ^ git-third-party save <relative path>

# reapply patches (e.g. on a fresh checkout)
git-third-party update third-party/RustPython
# ^ git-third-party update <relative path>

Without installing, you can run it straight from the flake:

nix run github:kp2pml30/git-third-party -- add third-party/RustPython <url> <commit>

How it works

It stores a configuration under /.git-third-party/ that describes all third-party repositories and their patches. save updates the patches, update reapplies them.

The .git-third-party directory must be tracked by git, while the third-party working trees themselves should not be.

Best effort is made to keep patches deterministic and to strip metadata from them, including:

  • git version
  • commit hash (which depends on the committer)

Contributing

See docs/contributing/.

License

GPL-3.0 (C) 2024-2026 Kira Prokopenko

About

Tool for patching third-party dependencies without need to fork them

Topics

Resources

License

GPL-3.0, LGPL-3.0 licenses found

Licenses found

GPL-3.0
LICENSE
LGPL-3.0
LICENSE.lgpl

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Contributors