Git / Bitbucket管道 - 根据我推送的分支,导致标签出现不同的原因是什么?

时间:2017-06-01 17:19:25

标签: git bitbucket git-tag bitbucket-pipelines git-describe

我试图理解为什么在运行我的bitbucket-pipelines.yml文件时,我得到两个与git标签不同的结果。目前,我的项目标记为1.0.0 - 1.0.25。 .yml文件看起来像这样......

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 ./ -x@exclude.lst
          - curl -u ${BB_AUTH_STRING} -X POST "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"${BITBUCKET_REPO_SLUG}-${GIT_TAG}.zip"

当我推送到掌握时,附加到下载工件的标签是正确的(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.

我的问题是 - 是什么原因导致标签出现不同,具体取决于我推送的分支?

1 个答案:

答案 0 :(得分:1)

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

来自the documentation(强调我的):

  

该命令可查找可从提交访问的最新标记。