{"id":15497475,"url":"https://github.com/heapwolf/gmm","last_synced_at":"2025-04-22T21:43:55.088Z","repository":{"id":66203331,"uuid":"64090770","full_name":"heapwolf/gmm","owner":"heapwolf","description":"Git Module Manager - http://gitmodules.org","archived":false,"fork":false,"pushed_at":"2016-08-18T13:52:34.000Z","size":28,"stargazers_count":78,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-29T19:11:09.448Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heapwolf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-24T23:46:15.000Z","updated_at":"2023-04-23T15:59:10.000Z","dependencies_parsed_at":"2023-03-01T09:30:56.667Z","dependency_job_id":null,"html_url":"https://github.com/heapwolf/gmm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heapwolf%2Fgmm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heapwolf%2Fgmm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heapwolf%2Fgmm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heapwolf%2Fgmm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heapwolf","download_url":"https://codeload.github.com/heapwolf/gmm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250330382,"owners_count":21412975,"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":[],"created_at":"2024-10-02T08:38:22.304Z","updated_at":"2025-04-22T21:43:55.068Z","avatar_url":"https://github.com/heapwolf.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SYNOPSIS\ngit module manager\n\n# MOTIVATION\nSimpler, faster, less complex dependency management!\n\nSubmodules receive much praise and criticism. Yet both depend\non the interpretation of how they should be used; `gmm` focuses\nentirely on providing a workflow for dependency management.\n\nDon't edit submodules — it's not an easy git workflow to manage.\nThis is also the basis of most submodule criticism. Instead, use\nthem as immutable dependencies, when you need changes, publish\nthem from upstream and simply re-install using `gmm`.\n\n# STATUS\nIdea/Work in Progress\n\n# INSTALL GMM\nYou can just run this simple one-liner to install. The google-\nshortened link points to the raw github user content (paste it\nin the url-bar of your browser to verify). The sudo prompt for\nyour password is the chmod command asking for your permission\nto make the file executable.\n\n### USING [`CURL`](https://curl.haxx.se/)\n```bash\n(curl -sL https://goo.gl/kS3VRE \u003e /usr/local/sbin/gmm \u0026\u0026 sudo chmod 700 gmm)\n```\n\n### USING [`BPKG`](https://github.com/bpkg/bpkg)\n\n```bash\nbpkg install -g 0x00A/gmm\n```\n\n### USING [`GIT`](https://git-scm.com/)\n\n```bash\ngit clone git@github.com:0x00A/gmm.git /usr/local/lib/gmm\nsudo chmod 700 /usr/local/lib/gmm/gmm\nln -s /usr/local/lib/gmm/gmm /usr/local/bin/gmm\n```\n\n# COMMANDS\nThere are only a handful, because really that's all you\nshould need. Here is some example output.\n\n```\n  git module manager v1.1.0\n\n  usage: gmm \u003ccommand\u003e [options]\n\n  commands:\n    i, install [-v] \u003cuser/repo\u003e [branch]   install modules\n    u, uninstall \u003cuser/repo\u003e               uninstall modules\n    ls [cache]                             list installed or cached packages\n    cache \u003cupdate|clean\u003e                   do stuff with the cache\n    search \"term\" [language]               search for stuff\n\n  options:\n    --help, -h              show this help information\n    --version               print the version number\n    --update                self update\n```\n\n## INSTALL MODULES\nInstall first clones the repo to your `~/.modules` cache, then\nadds it to your project from the cache.This is nice for\nperformance and offline usage.\n\nInstall will ensure your working tree is clean before adding a\nsubmodule. Then, it will add the submodule (at the specified\nbranch, or master by default), then commit it for you.\n\n```\n$ gmm i someorg/somerepo\n[OK] pulled latest from git://github.com/someorg/somerepo.git\n[INFO] using cached version\n[OK] added the submodule\n[OK] submodule installed\n```\n\nOnce your submodule is installed you will see a `modules`\ndirectory in your project, these files will be flagged as read\nonly. (This directory can be configured to be called whatever\nyou want using the `MODULES_LOCAL` variable).\n\n## LIST INSTALLED MODULES\n\n```\n$ gmm ls\n[INFO] listing (/Users/username/myproject)\n\n[INFO] 📦  foo@master in ./modules/someorg/foo\n[INFO] 📦  quxx@0.1.0 in ./modules/someorg/quxx\n\n[OK] found 2 module(s) in myproject\n```\n\n## LIST CACHED MODULES\nThe cache will **try** to update every time you install. But if\nyou want to update all items in your cache, you can run the\n`gmm cache update` command.\n\n```\n$ gmm ls cache\n[INFO] listing cache (/Users/username/.modules)\n\n[INFO] 📦  foo in /someorg/foo\n[INFO] 📦  quxx in /someorgb/quxx\n\n[OK] found 2 repos\n```\n\n## SEARCH FOR MODULES\nAny search takes only a few milliseconds.\n\n```\n$ gmm search hyperterm\n[OK] searching api.github.com for 'hyperterm'\n\n📦  zeit/hyperterm - HTML/JS/CSS Terminal\n    7858 ★ https://github.com/zeit/hyperterm\n\n📦  sindresorhus/hyperterm-snazzy - Snazzy HyperTerm theme\n    164 ★ https://github.com/sindresorhus/hyperterm-snazzy\n\n📦  matheuss/hpm - ✨ A plugin manager for HyperTerm ✨\n    108 ★ https://github.com/matheuss/hpm\n\n📦  zeit/hyperpower - HyperTerm particle effects extension\n    92 ★ https://github.com/zeit/hyperpower\n\n📦  sibartlett/hyperterm-1password - 1Password extension for HyperTerm\n    80 ★ https://github.com/sibartlett/hyperterm-1password\n\n📦  staltz/hyperpunk - A cyberpunk theme for HyperTerm\n    64 ★ https://github.com/staltz/hyperpunk\n\n📦  mxstbr/hyperterm-spacegray - Spacegray theme for hyperterm\n    62 ★ https://github.com/mxstbr/hyperterm-spacegray\n\n📦  CWSpear/hyperterm-visor - Open your HyperTerm terminal from anywhere with a global hotkey.\n    60 ★ https://github.com/CWSpear/hyperterm-visor\n...\n```\n\n\n# SETTINGS\nEnvironment variables that can be set in your shell\n\n### `MODULES_HOME`\nBy default is `~/.modules`.\n\n### `MODULES_LOCAL`\nWill determine what the local modules directory should be named.\nFor example, you might want this to be called `node_modules` or\n`cxx_modules` instead of the default which is just `modules`.\n\n### `PROTOCOL`\nBy default is `git`, but can be `https`, etc.\n\n### `HOST`\nBy default is `github.com`, set to whatever your git server is.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheapwolf%2Fgmm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheapwolf%2Fgmm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheapwolf%2Fgmm/lists"}