如何解决git-提取分支的修订版本而不将其检出
目前,我正在通过使用
生成内部版本git rev-list --count --first-parent $BRANCH_NAME
通常同时使用master和dev分支修订版,例如2.27
。当使用cicd管道(gitlab)时,我将不得不再次检查我的项目,这似乎有些过分。
是否有一种简单的方法可以获取分支的修订版本号而不必先将其检出?
** 编辑 **
作为第一步,我发现ci管道对我的repo做了部分检查。然后,它以分离的头部状态签出当前分支。
$ eval "$CI_PRE_CLONE_SCRIPT"
...
$ git branch # if run manually via script
* (HEAD detached at xxxxxx)
这是有希望的,因为这意味着我有更多的机会可以找到有关回购中其他分支的信息
** 临时解决方案 **
运行npm build
后,我正在执行一个节点脚本来执行肮脏的工作:
...
execSync('git checkout -b __headless__'); // to get away from headless state,so we can come back in a sec @jkr
// const current = execSync('git rev-parse --abbrev-ref HEAD').toString();
execSync('git fetch origin master');
execSync('git checkout master');
const master = execSync('git rev-list --count --first-parent HEAD').toString().replace(/\s/,'');
execSync('git fetch origin dev');
execSync('git checkout dev');
const dev = execSync('git rev-list --count --first-parent HEAD').toString().replace(/\s/,'');
execSync(`git checkout __headless__`);
...
** 临时解决方案重构 **
这就是我最终的目的
const check = execSync('git branch').toString();
if(check.indexOf('detached at') > -1) {
execSync('git checkout -b __headless__'); // to get away from headless state,so we can come back in a sec @jkr
}
const current = execSync('git rev-parse --abbrev-ref HEAD').toString();
execSync('git fetch origin master');
execSync('git checkout master');
const master = execSync('git rev-list --count --first-parent HEAD').toString().replace(/\s/,'');
execSync(`git checkout ${current}`);
...
在某个时候,我将master
和dev
数字拼凑起来,并将其作为构建版本注入。
解决方法
我的项目正在使用标签来跟踪版本。 因此,看看我来自哪个版本分支:
git describe --tags "--abbrev=0" "--match=v*.*.*" branchName
我需要什么。
如果版本信息保存在跟踪文件中,则可以通过以下方式查看它:
git show branchName:current_version.txt
我看到您使用了“版本”和“修订”,如果您是指sha-1的提交,那么这就是您所需要的:
git rev-parse branchName
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。