问题标签 [git-describe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
263 浏览

git - git describe in html format (inside gitlab-ci)

Using Gitlab API, during the CI, I create a release with a curl command:

#xA;

The description of the release is supposed to be all the commit since the last tag. This is done with this command:

#xA;

The problems with this approach is that this command generates one line per commit (which result in only one line in the description). To put multilines in the release description I need something like this:

#xA;

This way it is displayed correctly in gitlab.

So I was thinking using a shell script inside the CI (is this doable?) to generate a variable with all the commit separate with 'or' tag

It's a little bit tricky, and I don't know how to do it. Maybe there is another good solution...

Full gitlab-ci.yml:

#xA;

Edit solution:

In gitlab, if you want the difference between the last tag and the tag before, on one line, with 'br', here is the command:

#xA;

The output in the tag release is like so:

enter image description here

0 投票
1 回答
233 浏览

git - Git 描述 FOR /F 命令中的条件性致命错误

这是一个奇怪的问题。下面的代码在批处理文件中按预期工作:

当我尝试添加 --abbrev 选项时,出现致命错误:

输出:fatal: --dirty is incompatible with commit-ishes

但是如果我在 FOR /F 之外运行命令,它会按预期工作:

输出2.11-13-ga03306e6-dirty

我假设这可能与FOR /F命令的环境有关?

0 投票
0 回答
150 浏览

git - 将 gitlab CI/CD 预定义变量作为参数传递给 Qt 中的 .pri 文件

我在 QT 应用程序中有一个 .pri 文件,它从系统中获取 git 轻量级标签。

这是 Qt 应用程序中的 .pri 文件。

我为此应用程序创建了一个 docker 容器。这个容器没有 git。我不想在容器中安装 git 只是为了获取提交标签。

我想在 gitlab-ci.yml 中使用预定义的 CI/CD 环境变量。并将此 CI/CD 变量传递给 .pri 文件或将 CI/CD 变量设置为系统变量。是否可以将 CI/CD 变量作为参数传递给 .pri 文件?或者从 .pri 文件中的系统获取环境变量?

是否有预定义的 CI/CD 变量来获取轻量级标签(git describe --tags)?我刚刚从这个文档中找到了 CI_COMMIT_TAG 和 CI_COMMIT_SHORT_SHA。我需要结合这两个变量来获得轻量级标签吗?是否有 gitlab API 来获取轻量级标签?

https://docs.gitlab.com/ee/ci/variables/predefined_variables.html

0 投票
1 回答
1001 浏览

git - git标签不再被识别

我的 git 存储库有一个奇怪的问题。它突然“停止”使用标签。我可以创建标签,我可以列出标签。我什至可以使用git checkout $tagor git logs $tag。但是当使用git describe --exact-match标签时不再检测到?这目前破坏了我的管道,因为 master 上的标记提交似乎没有标记到 git 本身?一周前它工作得完美无缺。

我已经尝试运行git fsck --full它只修复了一些悬空提交,这对我来说看起来不错(因为我正在重新定位很多)。

另一个有趣的事情是:该工具gitg没有显示这些“新”提交的任何历史记录。而对于“旧”提交,一切都按预期工作。

有人知道这里发生了什么吗?

在 3 台机器上测试,全部运行 git 版本 2.17.1。

0 投票
2 回答
3349 浏览

git - 使用 git describe 使 Git 在分支上显示正确的标签

git describe有据可查

可以从提交中访问的最新标签。

资源:git describe --help

我有点不明白如何从提交中准确地访问标签。在分支中运行时,我没有看到我期望的行为,我不明白为什么。

https://github.com/nodemcu/nodemcu-firmware使用发布方案,其中所有更改都进入dev分支,然后master定期恢复。发布和带注释的标签是从master. git describe继续运行master会产生预期的结果。

运行时,dev我得到一个两年前创建的标签。

为什么是这样?

类似的情况是我们为某些用户保留的旧版本的(或多或少)冻结的分支。

该分支是在这个带注释的标签https://github.com/nodemcu/nodemcu-firmware/releases/tag/1.5.4.1-master_20161201之后创建的,此后只有少数提交落在该分支上。

0 投票
1 回答
226 浏览

git - git describe 不适合 git 流程?

我计划将几个服务迁移到一个 git 存储库。对于发布,我想使用 git flow 过程。Jenkins 构建将从每个现有分支构建工件。为了跟踪版本,每个构建都在触发构建的相应节点上标记版本。

不幸的是,在发布完成后将主分支合并回开发时遇到了麻烦。
在反向合并后git describe给了我来自主分支的标签,这不是詹金斯应该在开发上构建下一个版本的标签(开发已经将下一个版本与其他一些预发布标签集成)。

有没有办法告诉 git describe 不要跟踪“合并标签”?或者在这种情况下我必须使用另一个 git 命令吗?

0 投票
0 回答
762 浏览

git - 为什么“git describe”的输出从一个版本到另一个版本不同?

我有一个包含以下文件的本地 git 存储库:

以及以下 2 个远程仓库:

我已将所有标签推送到两个遥控器:

我可以在 GitLab.com EE 和我的本地实例 GitLab CE 的 Web 界面中看到所有 5 个标签。

当 CI 管道在我的本地实例(GitLab 社区版 13.0.6)上运行时,日志显示:

但在 GitLab.com(GitLab 企业版 13.1.0-pre eb3529954d4)上,日志显示:

在我的 Mac 上本地:

所以,即使我在 docker 容器中安装了相同的 git 版本(使用apk add git),似乎 GitLab 的 EE 和 CE 之间存储 repo 的方式可能不同?

我怎样才能让 EE 给我这个输出:

而不是这个输出:

2020 年 7 月 6 日更新

抱歉,经过进一步调查,我发现CE和EE可能与差异无关。我尝试使用共享跑步者与我自己的本地跑步者,但我仍然无法判断“git describe”何时会给出不同的结果。但是,我确实注意到在同一个跑步者、同一个管道、重新构建同一个工作上的 2 个构建之间存在差异。所以我把它贴在这里,以防有人能够查明根本原因。Build 16 (job-6.txt) 输出错误。Build 17 (job-5.txt) 有正确的输出。

2020 年 7 月 7 日更新

gitlab-runner 版本

macOS 跑步者

GitLab.com 共享跑步者

我不知道如何找到当前共享运行器的版本。

但是,相同的运行器版本 13.0.1 在构建 16 和 17 中给出了 2 个不同的结果。

0 投票
2 回答
356 浏览

node.js - Git 描述 NPM 不提供标签信息

我正在尝试使用Git-Describe npm 包来检索哈希信息和标签,以便稍后附加到我的应用程序中。

我已按照Git describe npm page中提供的说明进行操作。该脚本运行良好,但标记信息在此处检索为空。我还在本地和远程 git 中添加了一些标签。

我能够使用检索所有标签信息git tag -l

下面是我试图运行的脚本。

节点版本.js

输出是:

这里的标签信息带有空值。但是哈希字符串是正确的。(Git 日志输出)。

0 投票
1 回答
402 浏览

git - git describe 何时以及为什么不显示最新标签?

我有三个分支devstagingmaster。当我这样做时git describe,结果是v0.1无论签出哪个分支。

下面我将描述一个dev添加版本标签和合并stagingmaster这个新版本的工作流程。

  1. git checkout dev
  2. 做一些改变
  3. git add --all&&git commit -m 'just some testing'
  4. git tag -a v0.19.0
  5. git push && git push --tags
  6. git checkout staging
  7. git merge dev
  8. git push
  9. git checkout master
  10. git merge staging
  11. git push

现在我describe在每个分支上运行:

- git checkout dev && git describe && git describe --abbrev=0

结果:

我所期望的:

  • git checkout staging && git describe && git describe --abbrev=0

结果:

我所期望的:

  • git checkout master && git describe && git describe --abbrev=0

结果:

我所期望的:

在此处输入图像描述

这是为什么?我怎么能有这样一个过程,我在 dev 中进行一些更改,然后添加一个新标签,然后将这些更改与标签一起传播到所有其他分支?

0 投票
2 回答
240 浏览

git - 如果提交有两个标签,git describe --match 返回错误的标签名称

我正在尝试为提交添加一个额外的标签,以便以后能够通过模式选择此git describe提交--match

当我使用--match一个标签来捕获通常的提交时,一切正常。

但是,当我尝试通过“已部署”模式使用两个标签来匹配提交时,我得到了非常奇怪的标签,例如:

我有承诺:b946bdf (tag: a@0.0.1) Publish

我添加“已部署”标签:b946bdf (tag: a@0.0.1, tag: deployed) Publish

然后我跑git describe --abbrev=0 --match "deployed"

这个命令的结果是a@0.0.1-9-g1e5c94cc55fded72114b801bd47d8d29e7721255

如果我尝试使用--abbrev=1我得到a@0.0.1-9-g1e5c9

最有趣的-9-g1e5c94cc55fded72114b801bd47d8d29e7721255是,甚至没有这个提交。我不知道为什么以及从哪里得到这个奇怪的标识符。

我想得到一个干净的标签a@0.0.1

我做错了什么?