{"id":24058217,"url":"https://github.com/ctsrc/repotools","last_synced_at":"2025-10-06T02:13:38.795Z","repository":{"id":57478795,"uuid":"197280240","full_name":"ctsrc/repotools","owner":"ctsrc","description":"Short names, big time savings – a collection of commands for the git operations you perform most often","archived":false,"fork":false,"pushed_at":"2024-01-26T23:33:41.000Z","size":103,"stargazers_count":30,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-05T03:55:50.140Z","etag":null,"topics":["command-line-utilities","development-tools","science"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/repotools","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctsrc.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-16T23:14:01.000Z","updated_at":"2024-02-05T23:08:38.000Z","dependencies_parsed_at":"2022-09-17T04:21:50.275Z","dependency_job_id":"92341a5d-950b-4cbd-aaa6-5da63db7bb28","html_url":"https://github.com/ctsrc/repotools","commit_stats":{"total_commits":90,"total_committers":1,"mean_commits":90.0,"dds":0.0,"last_synced_commit":"b946c52de43874828e39cac1caccd9ee30ce4a4d"},"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/ctsrc/repotools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsrc%2Frepotools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsrc%2Frepotools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsrc%2Frepotools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsrc%2Frepotools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctsrc","download_url":"https://codeload.github.com/ctsrc/repotools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsrc%2Frepotools/sbom","scorecard":{"id":311981,"data":{"date":"2025-08-11","repo":{"name":"github.com/ctsrc/repotools","commit":"f6abc251633e05975a4b9f12dbb8eceb681b1820"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: ISC License: 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":"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":"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/rust.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/ctsrc/repotools/rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rust.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/ctsrc/repotools/rust.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/rust.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/ctsrc/repotools/rust.yml/master?enable=pin","Info:   0 out of   3 GitHub-owned GitHubAction 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/rust.yml:1","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":"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact repotools-v0.8.0 not signed: https://api.github.com/repos/ctsrc/repotools/releases/22702143","Warn: release artifact repotools-v0.7.5 not signed: https://api.github.com/repos/ctsrc/repotools/releases/22699335","Warn: release artifact repotools-v0.7.3 not signed: https://api.github.com/repos/ctsrc/repotools/releases/22162397","Warn: release artifact repotools-v0.7.1 not signed: https://api.github.com/repos/ctsrc/repotools/releases/21532260","Warn: release artifact repotools-v0.8.0 does not have provenance: https://api.github.com/repos/ctsrc/repotools/releases/22702143","Warn: release artifact repotools-v0.7.5 does not have provenance: https://api.github.com/repos/ctsrc/repotools/releases/22699335","Warn: release artifact repotools-v0.7.3 does not have provenance: https://api.github.com/repos/ctsrc/repotools/releases/22162397","Warn: release artifact repotools-v0.7.1 does not have provenance: https://api.github.com/repos/ctsrc/repotools/releases/21532260"],"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2024-0320"],"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-17T23:19:38.872Z","repository_id":57478795,"created_at":"2025-08-17T23:19:38.872Z","updated_at":"2025-08-17T23:19:38.872Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278547821,"owners_count":26004775,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["command-line-utilities","development-tools","science"],"created_at":"2025-01-09T05:56:24.084Z","updated_at":"2025-10-06T02:13:38.779Z","avatar_url":"https://github.com/ctsrc.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# repotools\n\n[![Crates.io](https://img.shields.io/crates/v/repotools?style=flat-square)](https://crates.io/crates/repotools)\n[![Crates.io](https://img.shields.io/crates/d/repotools?style=flat-square)](https://crates.io/crates/repotools)\n[![License](https://img.shields.io/badge/license-ISC-blue?style=flat-square)](LICENSE)\n[![GitHub stars](https://img.shields.io/github/stars/ctsrc/repotools?style=social)](https://github.com/ctsrc/repotools#start-of-content)\n\nShort names, big time savings – a collection of commands\nfor the git operations you perform most often.\n\nMeaningful and memorable: All of the commands have names that,\neven though short, make sense... For the most part ;)\n\nThe commands are, in short order: `dp`, `aa`, `st`, `di`, `cm`, `pu`, `le` and `sq`.\n\nThese correspond to `git diff`, `git add -A`, `git status`, `git diff --cached`,\n`git commit -m \u003cmessage\u003e`, `git push`, `git shortlog -se` and squashing a branch.\n\nFuller descriptions of the commands are availble in the usage section below.\nRead on to get the details, or [skip straight to installation](#installation)\nif you are feeling too impatient. (But do go back and read how to use them\nafterwards if you end up installing them right away.)\n\n## Usage\n\n### `dp [\u003cpath\u003e...]` – diff files pending staging in git repository, optionally limited to one or more files or directories\n\nWhen you look at what changes you want to stage for commit, you type `dp`.\n\n`dp` is like `git diff`, only more awesome.\n\n### `aa [\u003cpath\u003e...]` – add all files in git repository to index, optionally limited to one or more directories\n\nWhen you want to stage everything, or everything in certain directories,\nfor commit, you type `aa` or `aa \u003cpath\u003e...` respectively.\n\n`aa` is like `git add -A`, only more awesome.\n\n### `st [\u003cpathspec\u003e...]` – status of git repository, optionally limited to one or more files or directories\n\nMy workflow usually goes, write some code, stage some code, research something,\ntest the changes, write some code, stage some code, and so on.\n\nEvery now and then between writing, staging, etc, I look at what\nI've staged for commit so far, and what has not yet been staged.\nFor the high-level bird's eye view of that there is `st`.\n\n`st` is like `git status`, only more awesome.\n\n### `di [\u003cpath\u003e...]` – diff files staged for commit in git repository, optionally limited to one or more files or directories\n\nPrior to committing, and also now and then while still working on the code,\nit is very useful to review what you are about commit, both to ensure that\nyou are about to commit what you think you are about to commit, and in order to\nwrite useful commit messages that accurately describe the changes.\n\n`di` shows the diff for the staged changes against HEAD.\n\n`di` is like `git diff --cached`, only more awesome.\n\n### `cm \u003cmessage\u003e` – git commit with message\n\nWhen it comes time to commit, you have `cm`.\n\n`cm` is like `git commit -m`, only more awesome.\n\n### `pu [--tags] [-f] [\u003crepository\u003e]` – push commits or tags to remote git repository\n\nFinally you push with `pu`.\n\nUse `pu` to push commits to the remote of the current branch\n(or to *origin* if no remote is configured for the current branch).\n\nUse `pu --tags` to push tags.\n\nUse `pu -f` to force push commits.\n\nUse `pu --tags -f` to force push tags.\n\nFor all of the above, optionally specify which repository (`[\u003crepository\u003e]`)\nto push to, specified either as a named remote or as a URL.\n\n`pu` is like `git push`, only more awesome.\n\n### `le` – number of commits by each author in git repository\n\nAmong all of the commands, this is the only one that doesn't match\nthe meaning with its name. I would have named this command as I initially\ndid; `nc`, if it wasn't for the fact that the netcat command on a lot\nof systems is named `nc` already.\n\nThe name comes from \"l\" for \"log\" and \"e\" for the `-e` flag.\n\n`le` is like `git shortlog -se`, only more awesome.\n\n### `sq` – squash commits\n\nSquash commits in a branch in manner similar to\n\u003chttps://stackoverflow.com/questions/30136558/how-to-squash-commits-which-have-merge-commit-in-between/69827502#69827502\u003e,\nonly more awesome.\n\nUse it to squash a branch after you have merged the default branch into it.\n\n## Installation\n\n### Building from source\n\nIn order to build from source, you need to have the Rust toolchain installed.\nIf you don't have the Rust toolchain installed already, head on over to\nhttps://rustup.rs/ and follow the instructions there. Then come back here\nonce you've done that.\n\nWith the Rust toolchain installed, simply run:\n\n```bash\ncargo install repotools\n```\n\nThis will build and install all of the repotools command utilities.\n\n#### Building and installing only some of the repotools command utilites\n\nIf you only wish to build and install some of the repotools command utilities\nrather than all of them, you can do so by making use of the feature flags.\n\nWith the Rust toolchain installed (see above), run the following command, with\nthe features list adjusted according to your wishing with regards to which of\nthe command utilities you would like to build and install:\n\n```bash\ncargo install repotools --no-default-features \\\n  --features \"dp aa st di cm pu le sq\"\n```\n\n## Star Me on GitHub 🤩\n\nDo you think this project is awesome? I think *you* are awesome!\nNow show me some love and\n[star this project on GitHub](https://github.com/ctsrc/repotools#start-of-content).\n\n[![GitHub stars](https://img.shields.io/github/stars/ctsrc/repotools?style=social)](https://github.com/ctsrc/repotools#start-of-content)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctsrc%2Frepotools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctsrc%2Frepotools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctsrc%2Frepotools/lists"}