Конвейеры Git/Bitbucket - что заставляет теги выглядеть по-разному в зависимости от того, к какой ветви я добавляю?
Я пытаюсь понять, почему я получаю два разных результата относительно тегов git при запуске моего файла bitbucket-pipelines.yml. В настоящее время мой проект имеет теги, запущенные из 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"
Когда я нажимаю на master, тег, добавленный к артефакту загрузки, является правильным (1.0.25). Тем не менее, когда я подталкиваю к diff-test
теги, которые выводятся 1.0.14
а также 1.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 ответ
Git description предоставляет информацию о конкретном коммите, а все остальное (т. Е. Тег) относится к этому коммиту. Он не будет сообщать о тегах, которые не существуют в предке этого коммита. Поскольку ветви имеют разное происхождение, описание коммитов в разных ветвях может дать разные результаты.
Из документации (выделено мое):
Команда находит самый последний тег, доступный из коммита.