Подтвердить что ты не робот

Git Последняя проверка тегов

Я пишу оболочку script, и я ищу, чтобы проверить последнюю версию репо. В частности, я хочу разбить этот процесс на несколько этапов.

  • Я хочу сохранить последний тег репозитория в переменную
  • Распечатайте Checking out version: XX
  • Оформить последний тег

Я видел похожие вопросы, но я не вижу, как сохранить имя тега в переменной (возможно, потому что я noob с оболочкой скрипты).

4b9b3361

Ответ 1

git describe --tags должен предоставить вам информацию.

bash/shell script:

#!/bin/bash
...
latesttag=$(git describe --tags)
echo checking out ${latesttag}
git checkout ${latesttag}

Ответ 2

# Get new tags from remote
git fetch --tags

# Get latest tag name
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)

# Checkout latest tag
git checkout $latestTag

Ответ 3

Чтобы помещать информацию в переменную, вы ее назначаете:

myvar=myvalue

Однако вы хотите вычислить значение для назначения, вы не просто назначаете константу переменной. В вашем случае вы хотите назначить вывод команды переменной.

Сначала вам нужно выяснить, как получить последнее имя тега. Я оставлю это до вас, так как вы ничего не сказали о том, как создаются имена тегов.

Затем, когда у вас есть команда, которая дает последнее имя тега, вам нужно назначить имя переменной. Bash делает это с помощью "подстановки команд".

Например: thetagname=$( command_to_get_tag_name )

Итак, если вам нужно просто взять последний тег, который git сообщает следующее:

git tag | tail -1

то вы можете назначить его переменной следующим образом:

thetagname=$( git tag | tail -1)

и вы можете использовать/видеть значение, подобное этому:

echo $thetagname

или как пользователь1281385 говорит, например:

echo ${thetagname}

Два метода одинаковы, за исключением того, что второй способ позволяет объединить литерал с переменным значением:

echo ${thetagname}ing

который добавит "ing" к содержимому $thetagname. Скобки необходимы, чтобы предотвратить Bash от мысли, что "thetagnameing" является переменной.

На странице Bash man есть раздел под названием EXPANSION, в котором объясняется 7 видов расширения. Подстановка команд - одна из них. Макетная страница Bash довольно большая и действительно повторяет все интересные ключевые слова несколько раз, поэтому на самом деле раздражает поиск в ней вещей. Вот несколько советов о том, как найти раздел EXPANSION (и немного узнать о пейджере "меньше" ):

Запустите ручную считыватель, прочитав справочную страницу Bash следующим образом:

man bash

Найдите термин "РАСШИРЕНИЕ" в начале строки, как только вы попадете в считывающее устройство, набрав /^EXPANSION на дисплее. Когда вы наберете /, вы увидите/в нижней части экрана, но страница руководства все равно будет там. Это команда поиска шаблона. Затем введите ^EXPANSION, и вы увидите это в нижней части экрана. ^ означает "поиск вещей в начале строки", а "РАСШИРЕНИЕ" означает "искать буквенную строку" РАСШИРЕНИЕ ". Затем введите <enter> - и вы должны быть в первом появлении термина EXPANSION, которое происходит в начале Здесь описываются все виды расширений, которые оболочка Bash делает в вашей строке после ее ввода и перед выполнением преобразованной команды.

Когда в пейджере вы можете ввести h, чтобы получить список возможных команд.

Надеюсь, это было не слишком основательно. Если вы этого не видели раньше, трудно понять.

Ответ 4

В некоторых репозиториях git describe --tags нет информации, а простой git tag | tail -1 может привести к неправильному тегу, поскольку git сортирует теги странным образом.

Для меня лучшая команда - это вариация хвоста

VERSION = $(git tag | sort -V | tail -1)

Ответ 5

VERSION=$(git tag | sort -V | tail -1)

- идеальный ответ для получения последних тегов. Другие команды не дают точное имя тега.

Ответ 6

"git tag --contains | tail -1", (git tag --contains) перечисляет все теги в текущей ветке, (tail -1) ограничивает количество результатов вывода равным l, и это последний.