Я клонирую версию ядра 4.14.98_2.0.0_ga из git на ПК с Ubuntu 16.04. Я получаю версию ядра как 4.14.98-imx_4.14.98_2.0.0_ga+g5d6cbea. Но когда я делаю то же самое на ПК с Ubuntu 18.04, я получаю дополнительные 5 бит к версии ядра как 4.14.98-imx_4.14.98_2.0.0_ga+g5d6cbeafb80c. Может ли кто-нибудь сказать, почему эти дополнительные биты добавлены? Зависит ли это от хост-компьютера, что я использую, или он принимает теги git или фиксирует?
Если я даю команду git describe в 16.04, я получаю
v4.14.98-5985-g1175b59
Та же команда в 18.04 дает
v4.14.98-5985-g1175b5961153
Как я могу удалить "61153" из этого?
Git rev-parse, вероятно, как они получают версию, и у него есть опция --short для указания минимальной длины (core.abbrev) по крайней мере этого размера.
@Allen Wind, он клонировал ту же версию. Коллизии аббревиатур неизбежны.
@ dan1st да, понял и отредактировал его, но это строка версии пакета после его сборки, верно? Так что я предполагаю, что значение по умолчанию для git core.abbrev будет другим.
@dan1st версия ядра будет сохранена в файле kernel.release и сохраняется auto.conf каждый раз при компиляции ядра.
Из какого фактического коммита git вы клонируете? Похоже, что либо (а) две установки используют разную длину --abbrev (как уже предполагалось выше), либо, может быть, (б) что-то уже сохранило результаты в файл, и теперь что-то еще добавляет второй сокращенный хеш к тому, что было где-то сохранено. .
@tripleee git clone source.codeaurora.org/external/imx/linux-imx -b imx_4.14.98_2.0.0_ga это команда, которую я использую. если это так (а), где я могу проверить, определено ли --abbrev?
git config core.abbrev
печатает свое значение, если оно определено. git rev-parse HEAD
выводит текущий коммит полностью.
Git config core.abbrev не определен. и git rev-parse HEAD для этого я получаю 1175b59611537b0b451e0d1071b1666873a8ec32. Определяет ли --short количество добавляемых битов?
--short
просто запрашивает сокращенный формат; из коробки он вычисляет количество шестнадцатеричных цифр, которое достаточно безопасно в текущем репозитории. С помощью --short=7
вы указываете, сколько шестнадцатеричных цифр использовать вместо значения по умолчанию. (Вы продолжаете говорить о «битах», но не получаете такой детализации; каждая шестнадцатеричная цифра соответствует 4 битам.)
Чтобы напечатать один и тот же идентификатор только один раз,
git describe --abbrev=8
Чтобы навсегда настроить этот репозиторий так, чтобы он всегда сообщал сокращенный хэш с 8 шестнадцатеричными цифрами,
git config core.abbrev 8
Чтобы установить это постоянно для всех ваших локальных репозиториев (если репо не переопределяет его отдельно с помощью локальной конфигурации для каждого репо), добавьте --global в приведенную выше командную строку.
Когда core.abbrev не установлен, git отображает достаточно шестнадцатеричных цифр, чтобы убедиться, что напечатанный идентификатор является безопасным уникальным. Это описано в документации git-config:
core.abbrev Установите длину, до которой сокращаются имена объектов. Если не указано или установлен на "авто", соответствующее значение вычисляется на основе примерное количество упакованных объектов в вашем репозитории, которое надеюсь, этого достаточно, чтобы сокращенные имена объектов оставались уникальными для когда-то. Минимальная длина 4.
У вас одинаковые версии/конфигурации git? Git сокращает хэши коммитов. Длина сокращенного хэша может быть разной. Какую команду вы используете для получения версии?