В скриптах bash:
var=$(command)
устанавливает обычную (не массивную) переменную на основе вывода command
. Поэтому, если рассматриваемая команда создает два хеша коммита H1 и H2, у вас есть эквивалент:
var="H1 H2"
, что означает, что $var
- это строка длиной пять символов. (На практике git rev-list
выводит 40-символьные хэши SHA-1 с символами новой строки после них, поэтому в результате получается одна строка длиной 40 символов, или 81 символ, или 122 символа, и т. Д.)
Использование:
var=(H1 H2)
установит $var
в массив из двух элементов, поэтому в этом случае:
commits=($($git_list_commit_hashes_cmd))
сделает трюк.
Обратите внимание, что если вам не нужны сами хэши, git rev-list
может произвести подсчет напрямую:
git rev-list --count master..HEAD
производит только количество (нет необходимости в --reverse
, когда не используются фактические хэши).
Обратите внимание также, что --reverse
меняет нормальный порядок. Нормальный порядок основан на дате коммиттера, где есть возможность вывести более одного коммита за раз (например, при прохождении нескольких ветвей слияния). Вы можете сортировать по дате автора или по топологической сортировке.