{"id":36673407,"url":"https://github.com/starkers/ggg","last_synced_at":"2026-01-12T10:44:41.676Z","repository":{"id":49262254,"uuid":"378322563","full_name":"starkers/ggg","owner":"starkers","description":"Good Git Getter is a simple git \"clone\" assistant featuring recursive subdirectory creation and updating the users CWD after getting the code","archived":false,"fork":false,"pushed_at":"2023-01-27T09:59:15.000Z","size":200,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2024-11-15T15:45:07.694Z","etag":null,"topics":["bash","cli","fish","git","zsh"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/starkers.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}},"created_at":"2021-06-19T04:26:42.000Z","updated_at":"2023-01-26T15:42:56.000Z","dependencies_parsed_at":"2023-02-15T07:46:30.217Z","dependency_job_id":null,"html_url":"https://github.com/starkers/ggg","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/starkers/ggg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starkers%2Fggg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starkers%2Fggg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starkers%2Fggg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starkers%2Fggg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/starkers","download_url":"https://codeload.github.com/starkers/ggg/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/starkers%2Fggg/sbom","scorecard":{"id":846384,"data":{"date":"2025-08-11","repo":{"name":"github.com/starkers/ggg","commit":"dc9bfab31abcdd91cdd3e3b57083aea39aba8307"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/12 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/starkers/ggg/go.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/starkers/ggg/go.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/starkers/ggg/golangci-lint.yml/develop?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/starkers/ggg/golangci-lint.yml/develop?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/starkers/ggg/golangci-lint.yml/develop?enable=pin","Warn: downloadThenRun not pinned by hash: .github/workflows/go.yml:28","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/go.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/golangci-lint.yml:16","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 0.1.3 not signed: https://api.github.com/repos/starkers/ggg/releases/84885082","Warn: release artifact 0.1.2 not signed: https://api.github.com/repos/starkers/ggg/releases/77464874","Warn: release artifact 0.1 not signed: https://api.github.com/repos/starkers/ggg/releases/47212742","Warn: release artifact 0.0.1 not signed: https://api.github.com/repos/starkers/ggg/releases/44959342","Warn: release artifact 0.1.3 does not have provenance: https://api.github.com/repos/starkers/ggg/releases/84885082","Warn: release artifact 0.1.2 does not have provenance: https://api.github.com/repos/starkers/ggg/releases/77464874","Warn: release artifact 0.1 does not have provenance: https://api.github.com/repos/starkers/ggg/releases/47212742","Warn: release artifact 0.0.1 does not have provenance: https://api.github.com/repos/starkers/ggg/releases/44959342"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0493 / GHSA-p782-xgp4-8hr8","Warn: Project is vulnerable to: GO-2021-0113 / GHSA-ppp9-7jff-5vj2","Warn: Project is vulnerable to: GO-2022-1059 / GHSA-69ch-w2m2-3vjp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T21:32:56.345Z","repository_id":49262254,"created_at":"2025-08-23T21:32:56.346Z","updated_at":"2025-08-23T21:32:56.346Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338827,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T10:40:25.642Z","status":"ssl_error","status_checked_at":"2026-01-12T10:39:27.820Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bash","cli","fish","git","zsh"],"created_at":"2026-01-12T10:44:41.519Z","updated_at":"2026-01-12T10:44:41.671Z","avatar_url":"https://github.com/starkers.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ggg\n\n**g**ood **g**it **g**etter\n\n\nWritten because I like to `git clone` and `cd` in a single command.\n\nI also like to clone my git repo's into a **heirarchical directory structure**.\n\nEG:\n\n`https://github.com/org-name/repo.git` ==  `$HOME/src/github.com/org-name/repo` \n\n\n\n# Example\n\nIn this example we:\n1. Clone a https:// git repo and automatically `cd` into its location.\n2. Next we clone a `git@` git repo and automatically arrive in its current working dir.\n3. Repeat command 1, and we are back where its code resides\n\n\n![example](/media/example-zsh.png)\n\n\n\n## FAQ:\n\n### Can I clone to a different path?\n\nYes, set `path` in: `~/.config/ggg.toml`\n\n### Why?\n\nI used to use [this monstrosity](https://github.com/starkers/homedirectory/blob/a8f4e95dd5bd6eb857e30935396e51a442acd619/home/aliases#L105-L159) of a zsh/bash alias for years, but after migrating to fish I missed it... Also, it would be nice to make something more \"robust\"\n\n\n---\n\n# installation steps:\n\n## 1. get the binary\n\n### via download\ndownload a binary from a release from: https://github.com/starkers/ggg/releases/latest\n\n(don't forget to `chmod +x` the file after downloading it)\n\nYou can place the binary anywhere **so long as it is inside your** `$PATH`\n\nIn this case I'm going to store mine as `$HOME/.bin/ggg`\n\n\n2: add Aliases to your various shell configs.. EG:\n\n\n### compile and install it with go\nIf you have go: `go install github.com/starkers/ggg@latest` should install it for you under your `$GOPATH/bin`\n\nthe `ggg` binary should be built now\n\n\n## 2. configure your shell\n\nIn order to work you need to tell your shell about `ggg`.\n\n\u003e TIP: Don't forget to open a fresh terminal/shell session **after** modifying your settings\n\n\n### bash / zsh\n\nadd something like this to your `~/.profile`, `~/.bashrc` or `~/.zshrc` (whichever u use really):\n\n```\nif [[ -o interactive ]]; then\n  if hash ggg 2\u003e/dev/null; then\n    eval \"$(ggg hook zsh)\"\n  else\n    echo 'WARN: \"ggg\" binary not found in your PATH'\n  fi\nfi\n```\n\n### fish\n\nAdd something like this to a fish conf\n\n(for example: `~/.config/fish/conf.d/ggg.fish`)\n\n```\n# ggg\n# vi: ft=fish\n\nif status is-interactive\n  if command -s ggg \u003e /dev/null\n    ggg hook fish | source\n  else\n    echo 'WARN: \"ggg\" binary not found in PATH'\n  end\nend\n\n```\n\n\n\n# Configure\n\nOn first run, **ggg** automatically creates a config file called `~/.config/ggg.toml`.\n\nYou can update settings (such as your base path) in the config file.\n\n# Extending\n\nIf you have any feature requests, ideas for improvements please feel free to raise a PR or Issue.\n\n# License\nApache-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstarkers%2Fggg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstarkers%2Fggg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstarkers%2Fggg/lists"}