{"id":21969570,"url":"https://github.com/cinderblock/node-git-wip","last_synced_at":"2026-04-14T01:30:54.584Z","repository":{"id":44117881,"uuid":"149240659","full_name":"cinderblock/node-git-wip","owner":"cinderblock","description":"git-wip implementation entierly in node","archived":false,"fork":false,"pushed_at":"2023-01-04T21:51:57.000Z","size":194,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-08T14:41:42.973Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/cinderblock.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}},"created_at":"2018-09-18T06:40:29.000Z","updated_at":"2020-01-06T01:49:44.000Z","dependencies_parsed_at":"2023-02-02T21:16:06.032Z","dependency_job_id":null,"html_url":"https://github.com/cinderblock/node-git-wip","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/cinderblock/node-git-wip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinderblock%2Fnode-git-wip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinderblock%2Fnode-git-wip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinderblock%2Fnode-git-wip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinderblock%2Fnode-git-wip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cinderblock","download_url":"https://codeload.github.com/cinderblock/node-git-wip/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinderblock%2Fnode-git-wip/sbom","scorecard":{"id":282896,"data":{"date":"2025-08-11","repo":{"name":"github.com/cinderblock/node-git-wip","commit":"5057252ef1ccc9ff43d2f3898d1047e3eecea54b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.3,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"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":"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":-1,"reason":"No tokens found","details":null,"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":"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":"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":"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":"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":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"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":-1,"reason":"no releases found","details":null,"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":0,"reason":"28 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-pp7h-53gx-mx7r","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-pq67-2wwv-3xjx","Warn: Project is vulnerable to: GHSA-8cj5-5rvv-wf4v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3"],"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-17T16:22:42.673Z","repository_id":44117881,"created_at":"2025-08-17T16:22:42.674Z","updated_at":"2025-08-17T16:22:42.674Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31778580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T00:11:49.126Z","status":"ssl_error","status_checked_at":"2026-04-14T00:10:29.837Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2024-11-29T14:22:21.984Z","updated_at":"2026-04-14T01:30:54.547Z","avatar_url":"https://github.com/cinderblock.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# node-git-wip\n\ngit-wip implementation entirely in node.\n\nTargeted for use alongside other git [gui] tools and use with automatic deployment scripts.\n\n## How this `git-wip` works\n\nWhen called, this `git-wip` will create a new commit on a branch with the name `wip/$branch`, creating it if required.\nIt also leaves the index in the same state as the latest wip commit, with everything staged.\nOnce complete, `git-wip` will report the hash and/or the WIP branch name of the new commit.\nThis is targeted at usage by other automatic testing systems.\n\nWhen subsequent calls to `git-wip` are made, it simply continues the previously created branch.\n\nBy default, this `git-wip` will mark the current head as a _parent_ if the latest wip.\n\n## Install\n\n```\n$ yarn add @cinderblock/node-git-wip --dev\n```\n\nMy use cases are usually only needed on development machines and I preffer not to install packages globally.\nAll the features should work just fine if installed globally.\n\n## Usage\n\n#### Module\n\n```\nconst wip = require('@cinderblock/node-git-wip');\n\nwip({\n    historyStrategy: 'manual',\n    // ...\n});\n```\n\n#### cli\n\n```\n$ git-wip\n```\n\nThere are currently no command line options.\nTo control features, use a configuration file.\n\n## Options\n\nThere are a couple options that more dramatically change the behavior than others.\n\n- `historyStrategy`\n- `message`\n- `pathspec`\n- `prefix`\n- `repo`\n\nAll options are passed as an object to the exported function.\nOptions are also loaded from any configuration file according to [cosmiconfig](https://www.npmjs.com/package/cosmiconfig)'s search pattern.\nOptions from config files are merged with options passed to the function with the latter taking precedence.\n\n#### All options\n\nAny option left undefined will default to something sensible.\n\n##### `author`\n\nAuthor of wip commit.\n\n_Default:_ Default author from repository\n\n##### `ceilingDirs`\n\nHow high up the directory tree should we search for a `.git` folder indicating a repository?\n\n_Default:_ `''`\n\n##### `committer`\n\nCommitter of wip commit.\n\n_Default:_ `author`\n\n##### `debug`\n\nControl where debug data is sent.\n\n_Default:_ `false`\n\n- `false`_-ish_ or `'off'` disables logging.\n- `true`_-ish_ logs to `stdout`.\n- `'stderr'` will send to `stderr`.\n- A function can also be passed.\n\n##### `debugSteps`\n\nExtra debugging information.\n\n_Default:_ `undefined`\n\n##### `discoverAcrossFs`\n\nWhen searching parent directories for which git repository to open, controls if we stop when we cross a filesystem boundary.\n\n_Default:_ `false`\n\n##### `flags`\n\nControls the git flags when adding files to the index before committing.\n\n_Default:_ `none`\n\n- An integer number from 0-7 where each bit corresponds to a flag\n- An `object` with properties controlling the flags and the following shape:\n  ```\n  {\n    force: false,\n    disablePathspecMatch: false,\n    checkPathspec: false,\n  }\n  ```\n\n##### `historyStrategy`\n\nControls how history will look\n\n_Default:_ `'merge'`\n\n- `'merge'` marks HEAD branch as a parent of current branch\n- `'parallel'` or `'manual'` does not connect the wip branch to the HEAD branch past the first commit\n- `'clear'` or `'reset'` creates a new branch when HEAD branch has moved forward\n\n##### `message`\n\nControls the commit message\n\n_Default:_ `'WIP'`\n\n##### `pathspec`\n\nControls which files are added to the WIP commit.\n\n_Default:_ `['*']`\nThis option is an array of git [`pathspec`](https://git-scm.com/docs/gitglossary#gitglossary-aiddefpathspecapathspec) strings.\n\n##### `postfix`\n\nUse a postfix string instead of a prefix.\n\n_Default:_ `undefined`\nIf defined, `prefix` option is ignored.\n\n##### `prefix`\n\nControls the prefix added to the current HEAD branch name.\n\n_Default:_ `'wip'`\n\n- Any sensible non-empty `string` of valid git branch name characters can be used\n- A `function` that takes in the name of the current HEAD branch (_ie_ `'master'`) and returns the new branch name.\n\n##### `repo`\n\nIf you already have an instance of `NodeGit.Repository` open, pass it in to reuse it.\n\n_Default:_ `undefined`\n\nIf `repo` is defined and the correct type, `repoPath` and related options are ignored.\n\n##### `repoPath`\n\nControls where we start looking for the git repository.\n\n_Default:_ `'.'`\n\n##### `separator`\n\nControls the separator used when constructing the wip branch name from the HEAD branch name.\n\n_Default:_ `'/'`\n\n##### `useNestedPrefix`\n\nControls if, when using branches in \"folders\", to put all the different wip branches together in one directory at the top level,\nor to put them near each branch.\n\nFor instance, if you are working on a branch called `feature/foobar`:\n\n- `true` creates a branch `feature/wip/foobar`\n- `false` creates a branch `wip/feature/foobar`\n\n_Default:_ `true`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcinderblock%2Fnode-git-wip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcinderblock%2Fnode-git-wip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcinderblock%2Fnode-git-wip/lists"}