用于从 git ref 中提取分支名称的 Node.js 包

Posted

技术标签:

【中文标题】用于从 git ref 中提取分支名称的 Node.js 包【英文标题】:Node.js package for extracting branch name from git ref 【发布时间】:2021-11-09 00:43:42 【问题描述】:

我在 GitHub Actions 上运行我的 CI,并使用 GITHUB_REF 默认环境变量作为下载 URL 的一部分。

GitHub 将GITHUB_REF 设置为:

refs/heads/staging

我从git: difference between "branchname" and "refs/heads/branchname" 了解到,需要refs/heads/ 前缀,以便 git 拥有到分支的“完整路径”。

现在,我想知道是否有人知道部署到像 npmjs 这样的注册表的现成 node.js 包,我可以使用它从长引用字符串中提取分支名称?似乎可能有许多不同的前缀:refs/tags/refs/remotes 等,如果有其他可用的解决方案,我宁愿不编写自定义脚本。

【问题讨论】:

$(git rev-parse --abbrev-ref HEAD) 【参考方案1】:

感谢 Lawrence Cherone 的comment,我找到了这个GitHub gist:

const  execSync  = require('child_process');

function executeGitCommand(command) 
  return execSync(command)
    .toString('utf8')
    .replace(/[\n\r\s]+$/, '');


const BRANCH = executeGitCommand('git rev-parse --abbrev-ref HEAD');
const COMMIT_SHA = executeGitCommand('git rev-parse HEAD');

它不是一个 npm 包,但现在已经足够了。

【讨论】:

以上是关于用于从 git ref 中提取分支名称的 Node.js 包的主要内容,如果未能解决你的问题,请参考以下文章

使用“git pull”时,如何将 Git 配置为自动从当前分支中提取?

在 Jenkins Pipeline/Jenkinsfile 中获取 git 分支名称

DevOps与Git之间的代码提取与上传

Git引用

在没有分支的情况下推送git commit

GIT:如何在恢复合并后从分支中提取更改