Skip to main content

A git powered package manager built on top of submodules.

Project description

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

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

gitpkg-0.3.0.tar.gz (26.1 kB view hashes)

Uploaded Source

Built Distribution

gitpkg-0.3.0-py3-none-any.whl (30.6 kB view hashes)

Uploaded Python 3

Supported by

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