{"id":21252677,"url":"https://github.com/atomicptr/gitpkg","last_synced_at":"2026-05-21T04:04:04.184Z","repository":{"id":208146395,"uuid":"715046163","full_name":"atomicptr/gitpkg","owner":"atomicptr","description":"A git powered package manager built on top of submodules.","archived":false,"fork":false,"pushed_at":"2024-04-03T13:01:06.000Z","size":109,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-07T00:37:43.937Z","etag":null,"topics":["git","package-manager"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atomicptr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-11-06T11:24:12.000Z","updated_at":"2023-11-21T03:36:13.000Z","dependencies_parsed_at":"2023-11-25T12:25:02.431Z","dependency_job_id":"a936e296-c820-4115-954c-1bcaf80f9141","html_url":"https://github.com/atomicptr/gitpkg","commit_stats":null,"previous_names":["atomicptr/gitpkg"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicptr%2Fgitpkg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicptr%2Fgitpkg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicptr%2Fgitpkg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomicptr%2Fgitpkg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atomicptr","download_url":"https://codeload.github.com/atomicptr/gitpkg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243690124,"owners_count":20331726,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","package-manager"],"created_at":"2024-11-21T03:48:25.224Z","updated_at":"2026-05-21T04:04:04.099Z","avatar_url":"https://github.com/atomicptr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gitpkg\n\nA git powered package manager built on top of submodules.\n\n## Install\n\nThe recommended way to install git-pkg is via [pipx](https://pypa.github.io/pipx/):\n\n```bash\n$ pipx install gitpkg\n```\n\n## Usage\n\nThe first thing you need to do to make your project work with git pkg is add a\ndestination. A destination is a place where your packages will be installed into,\nyou can have multiple of these.\n\nInstall a destination by using:\n\n```bash\n$ git pkg dest add addons\n```\n\nThe directory does not have to exist, it will be automatically generated.\n\nNext we need to install packages lets do so by:\n\n```bash\n$ git pkg add https://github.com/coppolaemilio/dialogic\n```\n\nBut wait! While we now have an addons/dialogic directory, the thing we actually\nwanted there is now at addons/dialogic/addons/dialogic\n\nMany projects, in this case Godot projects have the thing that is important to us\nin a subdirectory, to have this subdirectory in the desired location we have\nto define it as the package root by:\n\n```bash\n# You can just re-run this it will reconfigurate the package\n$ git pkg add https://github.com/coppolaemilio/dialogic --package-root addons/dialogic\n# OR: short hand\n$ git pkg add https://github.com/coppolaemilio/dialogic -r addons/dialogic\n```\n\nNice! But what do I do if the repository name and the directory I want is different?\n\nLets look at the next example:\n\n```bash\n$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -r addons/AsepriteWizard\n```\n\nWhile this again will add addons/godot-aseprite-wizard we want the directory name to be\nAsepriteWizard we can do this by:\n\n```bash\n$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -r addons/AsepriteWizard --name AsepriteWizard\n# OR:\n$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git --package-root-with-name addons/AsepriteWizard\n# OR: actual shorthand\n$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -rn addons/AsepriteWizard\n```\n\nOh no! Now we have addons/godot-aseprite-wizard and addons/AsepriteWizard... why?\nNames are essential for identifying projects so this can not be updated, we just have to remove\nthe unwanted package now:\n\n```bash\n$ git pkg remove godot-aseprite-wizard\n```\n\nNice! Now we can finally get back to work!\n\nA few days later...\n\nIt looks like the packages received some updates! To update all installed packages simply run:\n\n```bash\n$ git pkg update\n# You can also update singular packages by providing their names\n$ git pkg update dialogic AsepriteWizard\n```\n\nSince this is powered by git submodules, you have to commit the update.\n\n## Motivation\n\nManaging other git repositories as dependencies is essentially a very good idea\nbut git submodules are a pain to work with so there came the idea of having a \nsimpler approach that feels more like using something like npm, composer etc.\n\nI mostly wrote this to use this in Godot projects to manage the addons I install\nbut quickly realized this can be used for a lot of programming languages where\npackage managers are not an option.\n\nThis is essentially just an opinionated wrapper around git and git submodules.\n\n## License\n\nGNU General Public License v3\n\n![](https://www.gnu.org/graphics/gplv3-127x51.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomicptr%2Fgitpkg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatomicptr%2Fgitpkg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomicptr%2Fgitpkg/lists"}