Git/Bitbucket流水线 - 根据我推送的分支,标签显示的不同会是什么?

问题描述:

我试图理解为什么我运行我的bitbucket-pipelines.yml文件时,我得到了两个与git标签不同的结果。目前我的项目的标签从1.0.0 - 1.0.25运行。 .yml文件看起来像这样...Git/Bitbucket流水线 - 根据我推送的分支,标签显示的不同会是什么?

pipelines: 
    branches: 
    diff-test: 
     - step: 
     script: 
      - export PREVIOUS_GIT_HASH=`git rev-list --tags --skip=2 --max-count=1` 
      - export PREVIOUS_GIT_TAG=`git describe ${PREVIOUS_GIT_HASH} --abbrev=0` 
      - export GIT_TAG=`git describe --tags --abbrev=0` 
      - echo ${PREVIOUS_GIT_TAG} ${GIT_TAG} 
    # A develop step/script happens here but it's irrelevant... 

    master: 
     - step: 
     script: 
     # set the most recent tag as an environment variable. 
      - export GIT_TAG=`git describe --tags --abbrev=0` 
      - zip -FSr ${BITBUCKET_REPO_SLUG}-${GIT_TAG}.zip ./ [email protected] 
      - curl -u ${BB_AUTH_STRING} -X POST "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form [email protected]"${BITBUCKET_REPO_SLUG}-${GIT_TAG}.zip" 

当我推到master时,附加到下载工件的标签是正确的(1.0.25)。但是,当我推送到diff-test时,回显出的标签是1.0.141.0.15

在git文档中,它代表describe,它表示--tags: Instead of using only the annotated tags, use any tag found in refs/tags namespace. This option enables matching a lightweight (non-annotated) tag.

我的问题是 - 是什么导致标签出现不同取决于我推到哪个分支?

Git describe提供了有关特定提交的信息,其他所有内容(即标记)都与该提交相关。它不会报告该提交的祖先中不存在的标签。由于分支具有不同的祖先,因此在不同分支中描述提交可能会产生不同的结果。

the documentation(重点煤矿):

该命令将查找最近的标记,是到达从提交

+0

谢谢。好的 - 这意味着它实际上表现得“正确”,只是不符合我的预期。所以,如果我理解这个权利,如果我将相同的技术应用到主分支,它将返回'1.0.24 1.0.25',因为那些分支是相对的。 – aberkow