Skip to main content

gitpkg

A git powered package manager built on top of submodules.

Install

The recommended way to install git-pkg is via pipx:

$ pipx install gitpkg

Usage

The first thing you need to do to make your project work with git pkg is add a destination. A destination is a place where your packages will be installed into, you can have multiple of these.

Install a destination by using:

$ git pkg dest add addons

The directory does not have to exist, it will be automatically generated.

Next we need to install packages lets do so by:

$ git pkg add https://github.com/coppolaemilio/dialogic

But wait! While we now have an addons/dialogic directory, the thing we actually wanted there is now at addons/dialogic/addons/dialogic

Many projects, in this case Godot projects have the thing that is important to us in a subdirectory, to have this subdirectory in the desired location we have to define it as the package root by:

# You can just re-run this it will reconfigurate the package
$ git pkg add https://github.com/coppolaemilio/dialogic --package-root addons/dialogic
# OR: short hand
$ git pkg add https://github.com/coppolaemilio/dialogic -r addons/dialogic

Nice! But what do I do if the repository name and the directory I want is different?

Lets look at the next example:

$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -r addons/AsepriteWizard

While this again will add addons/godot-aseprite-wizard we want the directory name to be AsepriteWizard we can do this by:

$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -r addons/AsepriteWizard --name AsepriteWizard
# OR:
$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git --package-root-with-name addons/AsepriteWizard
# OR: actual shorthand
$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -rn addons/AsepriteWizard

Oh no! Now we have addons/godot-aseprite-wizard and addons/AsepriteWizard... why? Names are essential for identifying projects so this can not be updated, we just have to remove the unwanted package now:

$ git pkg remove godot-aseprite-wizard

Nice! Now we can finally get back to work!

A few days later...

It looks like the packages received some updates! To update all installed packages simply run:

$ git pkg update
# You can also update singular packages by providing their names
$ git pkg update dialogic AsepriteWizard

Since this is powered by git submodules, you have to commit the update.

Motivation

Managing other git repositories as dependencies is essentially a very good idea but git submodules are a pain to work with so there came the idea of having a simpler approach that feels more like using something like npm, composer etc.

I mostly wrote this to use this in Godot projects to manage the addons I install but quickly realized this can be used for a lot of programming languages where package managers are not an option.

This is essentially just an opinionated wrapper around git and git submodules.

License

GNU General Public License v3

Metadata

Release files for gitpkg 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gitpkg 0.3.2
File Size Uploaded Provenance Actions
gitpkg-0.3.2.tar.gz 25.4 kB With provenance Details for gitpkg-0.3.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gitpkg 0.3.2
File Interpreter ABI Platform Actions
gitpkg-0.3.2-py3-none-any.whl Python 3 none any Details for gitpkg-0.3.2-py3-none-any.whl

Total release size: 56.1 kB

Release files / gitpkg-0.3.2.tar.gz

Download URL gitpkg-0.3.2.tar.gz
Size 25.4 kB
Tags Source
SHA-256 checksum
How to use checksums
eca37d239e5bd537d6950563f3552825a8f11cd9cf7936e06d1a060e8a32847a
BLAKE2b-256 checksum
How to use checksums
8875ac9a377e2a528d0f3510279360c4117c104a793e4726e3dd02595e919806
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 9, 2025.

Transparency log

Release files / gitpkg-0.3.2-py3-none-any.whl

Download URL gitpkg-0.3.2-py3-none-any.whl
Size 30.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
93eaf935c16d400b49fc18f008ff671660d4f3cbece89e8a27b5930bcf217b51
BLAKE2b-256 checksum
How to use checksums
d348774dcb229b1bd7e142fb126616f22d33fef383671c26547bb9d350356167
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 9, 2025.

Transparency log

Security for gitpkg 0.3.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for gitpkg-0.3.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 9, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page