@currents/commit-info

中文文档
3.0.0发布于 2026/11/05MITTypeScriptCommonJS构建来源已验证近 30 天下载 183.9万

收藏 CI或CLI提供的Git信息

中文使用文档
文档目录11 节
  1. 安装
  2. 使用
  3. CI 提供者变量
  4. 集装箱
  5. 拉动请求构建
  6. 后退环境变量
  7. 嵌入容器
  8. 个别方法
  9. 获取缓冲
  10. 小印数
  11. MIT 许可证

@ 当前/ 承诺- info

收藏 Git 来自 git CLI 的信息

安装

测试过 节点.js 页:1.

npm install --save @currents/commit-info

使用

const {commitInfo} = require('@currents/commit-info')
// default folder is current working directory
commitInfo(folder)
  .then(info => {
    // info object will have properties
    // branch
    // message
    // email
    // author
    // sha
    // timestamp (in seconds since epoch)
    // remote (without credentials)
    // ghaEventData (GitHub Actions pull request events only)
  })

每个财产都来自第一个有价值的财产,或者是 null数字 :

  1. 页:1 COMMIT_INFO_* 环境变量,见 后退环境变量
  2. gi src/git-api.js (英语)
  3. cI 提供者的环境变量,参见 CI 提供者变量

这个 remote 是例外: CI 提供者的值出现在 git 之前. COMMIT_INFO_REMOTE 还是先来 例如,在Azure管道上,克隆人往往有一个SSH遥控器,以及 BUILD_REPOSITORY_URI 拥有 HTTPS URL 。 设置遥控器的 CI 供应商有 AWS 代码构建、 Azure 管道、 竹子、 Buildkite、 CircleCI、 Drone、 GitLab、 Semaphore 和 Netlify, 参见 标准/c.js。 。 。 .

注释:

  • git 报告没有分支进行脱机(HEAD),所以分支来自CI提供者. 来自 COMMIT_INFO_BRANCH 并如实报告提供供应商.
  • remote 从不包含用户名称或密码,无论它来自何处。 GitLab的电话 CI_REPOSITORY_URL例如,持有工作标志.
  • 以本地人决定 Promise。 。 。 .
  • 如果您需要调试, 请使用 DEBUG=commit-info 环境变量。 调试输出不包含远程的证书 .
  • 当 git 失败, 并且字段在 CI 提供者的变量之后仍然是空的, commitInfo 用 git 错误和 COMMIT_INFO_* 要设置的变量。 没有寄存器和CI提供者的变量填充字段时,或者没有寄存器和CI提供者时,没有警告.
  • 当 git 不安装或不安装在 PATH,所有 git 值都是空的,警告说 git 在 PATH。安装 git 或设置 COMMIT_INFO_* 变量.

CI 提供者变量

当 git 不返回一个值时, 它来自 CI 提供者的变量 。 遥控器首先来自这些变量. 该分支来自:

提供者处
GitHub 动作GH_BRANCH, (中文(简体) ), GITHUB_HEAD_REF (请求), GITHUB_REF_NAME,或 GITHUB_REF 无 refs/heads/ 或者说 refs/tags/
吉特拉布语NameCI_COMMIT_REF_NAME
圆CICIRCLE_BRANCH
詹金斯(英语:CHANGE_BRANCH (多分支牵引请求),或 GIT_BRANCH 无 origin/, (中文(简体) ), refs/remotes/origin/ 或者说 refs/heads/
水管SYSTEM_PULLREQUEST_SOURCEBRANCH 无 refs/heads/ (撤回请求),或 BUILD_SOURCEBRANCHNAME,而这只是最后一个部分: x 页:1 feature/x
点球管BITBUCKET_BRANCH
建树BUILDKITE_BRANCH

AWS 代码Build 给出没有分支 。 其他财产和提供者在 标准/c.js。 。 。 . getCiCommitInfo() 返回这些值和提供者名称.

集装箱

git 2.35.2,后来拒绝读取由另一个用户拥有的寄存器,其中 fatal: unsafe repository (2.35.2至2.37.x) 或 fatal: detected dubious ownership in repository (2.38.0及后). 当一个容器作为根运行于另一个用户的取出时,这种情况很常见. 在 CI 上,只读的 git 命令会再次运行 -c safe.directory=*CI意味着 CI 变量设定为非 false 或者说 0,或者CI提供商之一在 src/ci-professor.js (中文(简体) ) 检测到;例如,Jenkins没有设置 CI。 。 。 . GOOGLE_CLOUD_PROJECT, (中文(简体) ), GCP_PROJECT, (中文(简体) ), GCLOUD_PROJECT 财务报告和审定财务报表 JENKINS_HOME 不计数,因为开发者往往在外壳中设置它们. * 因为文件夹可以是寄存器的子文件夹.

git 2.35.2至2.37.x 忽略 safe.directory 在命令行,所以这里 commitInfo 打印警告(图2.3.8.0并随后予以尊重);运行 git config --global --add safe.directory '*' 或设置 COMMIT_INFO_* 变量.

拉动请求构建

根据拉动请求建立许多 CI 提供者检查一个将拉动请求合并到目标分支的承诺. GitHub 动作, 例如检查 refs/pull/<number>/merge,其信息为 Merge <sha> into <sha>。 。 。 .

当退约承诺如此合并时, commitInfo 报告拉动请求的最后承诺: sha, (中文(简体) ), message, (中文(简体) ), email, (中文(简体) ), author 财务报告和审定财务报表 timestamp发现其行为包括:

  • GitHub 动作 : pull_request.head.sha 在事件文件中 (GITHUB_EVENT_PATH(中文(简体) )
  • GitLab 合并了成果管道: CI_MERGE_REQUEST_SOURCE_BRANCH_SHA
  • 阿苏雷管: SYSTEM_PULLREQUEST_SOURCECOMMITID
  • 崔维斯: TRAVIS_PULL_REQUEST_SHA
  • 司马彪: SEMAPHORE_GIT_PR_SHA
  • Buildkite : (帮助) BUILDKITE_PULL_REQUEST_HEAD_COMMIT
  • Bitbucket 管道 : BITBUCKET_COMMIT

承诺只有在被检查出的承诺是合并,而承诺是其父母之一时才使用。 如果一个浅层克隆体没有包含它( 例如) actions/checkout 默认值 fetch-depth: 1它将随着 git fetch --depth=1 origin <sha>,还有3次暂停。 如果取回失败, 则报告退出承诺 。 获取不使用 safe.directory 重试。 设定 CURRENTS_DISABLE_HEAD_COMMIT_FETCH=true 跳过获取.

这个 COMMIT_INFO_* 下面的变量仍然具有优先地位。 何时 COMMIT_INFO_SHA 被设定,拉请求的承诺没有被检查.

后退环境变量

您可以通过设置这些环境变量来提供承诺信息 。 它们优先于git和CI提供者的变量.

branch: COMMIT_INFO_BRANCH
message: COMMIT_INFO_MESSAGE
email: COMMIT_INFO_EMAIL
author: COMMIT_INFO_AUTHOR
sha: COMMIT_INFO_SHA
timestamp: COMMIT_INFO_TIMESTAMP
remote: COMMIT_INFO_REMOTE

嵌入容器

在 Docker 容器内运行应用程序时,您应该使用 -e 语法.

$ docker run \
  -e COMMIT_INFO_BRANCH=develop \
  -e COMMIT_INFO_SHA=e5d9eb66474bc0b681da9240aa5a457fe17bc8f3 \
  <container name>

见 插件实例 一个完整的例子.

个别方法

何况 commitInfo 本单元还揭示了个人承诺的回归 方法 getBranch, (中文(简体) ), getMessage, (中文(简体) ), getEmail, (中文(简体) ), getAuthor, (中文(简体) ), getSha, (中文(简体) ), getTimestamp, (中文(简体) ), getRemoteOrigin。这些方法只使用git,而不是环境变量. getRemoteOrigin 返回没有证书的远程.

其他出口:

  • getCiCommitInfo(env = process.env): CI 提供者的值,参见 CI 提供者变量编辑 remote 没有证书.
  • detectCiProvider(env = process.env): CI 提供者名称,例如 githubActions,或 null。 。 。 .
  • removeCredentials(url):从URL中删除用户名和密码,保留端口. 返回其他值,例如: [email protected]:o/r.git就像他们一样.

举个例子

const {getAuthor} = require('@currents/commit-info')
getAuthor('path/to/repo')
  .then(name => ...)

获取缓冲

以当前 git 分支名称或 null。 。 。 .

const {getBranch} = require('@currents/commit-info')
getBranch()
  .then(branch => ...)
  • 如果这是分离的(报告) HEAD),返回时 null

小印数

许可:麻省理工学院 - 做任何与代码有关的事情, 但如果它不起作用,不要责怪我.

支持: 如果您发现此模块有任何问题, 电子邮件 / 微博 / 未决问题 在基图布

MIT 许可证

版权(c)2017 Cypress.io

特此免费准许任何人 获取该软件和相关文件的副本 文件(“软件”),在软件中处理,不包含 限制,包括不限制使用权, 复制、修改、合并、出版、发行、分版和/或销售 软件的复制本,并允许向 为此提供了软件,但须符合下列条件: 条件:

上述版权通知和本许可通知应为: 列入软件的所有副本或大部分.

软件是提供的"是", 没有任何种类的恐惧, 或监禁,包括但不限制于 特别目的和目的的证明 无所不入。 绝对不能让警察或警察 B. 任何索赔、救济或其他负债的持有者, 条约、条约或其他条约行动 来源、来源或与溶剂或使用有关的 其他交易 在软件.

版本与发布记录

@currents/commit-info 共发布 8 个版本,首次发布于 2023/11/07;过去 12 个月发布了 6 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.0.0latest2026/11/056 天前
3.0.0-beta.0beta2026/11/056 天前
2.0.02026/10/061 个月前
2.0.0-beta.02026/10/041 个月前
1.1.02026/09/251 个月前
1.1.0-beta.02026/09/241 个月前

关于 @currents/commit-info 的常见问题

@currents/commit-info 是什么?

收藏 CI或CLI提供的Git信息

如何安装 @currents/commit-info?

在项目目录运行 npm install @currents/commit-info,或使用 pnpm add / yarn add / bun add。

@currents/commit-info 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@currents/commit-info 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@currents/commit-info 可以商用吗?

@currents/commit-info 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@currents/commit-info 的下载量有多少?

根据 npm 官方下载统计,@currents/commit-info 在 2026/10/11 – 2026/11/09 这 30 天内被下载 1,839,102 次,日均约 61,303 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@currents/commit-info 还在维护吗?

最新版本 3.0.0 发布于 2026/11/05(6 天前);至今共发布 8 个版本,其中过去 12 个月发布了 6 个;首次发布于 2023/11/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。