Почему лишние биты добавлены в версию ядра в Ubuntu 18.04

Я клонирую версию ядра 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? Git сокращает хэши коммитов. Длина сокращенного хэша может быть разной. Какую команду вы используете для получения версии?

dan1st 21.12.2020 06:39

Git rev-parse, вероятно, как они получают версию, и у него есть опция --short для указания минимальной длины (core.abbrev) по крайней мере этого размера.

Allan Wind 21.12.2020 06:48

@Allen Wind, он клонировал ту же версию. Коллизии аббревиатур неизбежны.

dan1st 21.12.2020 06:49

@ dan1st да, понял и отредактировал его, но это строка версии пакета после его сборки, верно? Так что я предполагаю, что значение по умолчанию для git core.abbrev будет другим.

Allan Wind 21.12.2020 06:52

@dan1st версия ядра будет сохранена в файле kernel.release и сохраняется auto.conf каждый раз при компиляции ядра.

mikrokosmos 21.12.2020 07:04

Из какого фактического коммита git вы клонируете? Похоже, что либо (а) две установки используют разную длину --abbrev (как уже предполагалось выше), либо, может быть, (б) что-то уже сохранило результаты в файл, и теперь что-то еще добавляет второй сокращенный хеш к тому, что было где-то сохранено. .

tripleee 21.12.2020 07:15

@tripleee git clone source.codeaurora.org/external/imx/linux-imx -b imx_4.14.98_2.0.0_ga это команда, которую я использую. если это так (а), где я могу проверить, определено ли --abbrev?

mikrokosmos 21.12.2020 07:22
git config core.abbrev печатает свое значение, если оно определено. git rev-parse HEAD выводит текущий коммит полностью.
tripleee 21.12.2020 07:24

Git config core.abbrev не определен. и git rev-parse HEAD для этого я получаю 1175b59611537b0b451e0d1071b1666873a8ec32. Определяет ли --short количество добавляемых битов?

mikrokosmos 21.12.2020 07:35
--short просто запрашивает сокращенный формат; из коробки он вычисляет количество шестнадцатеричных цифр, которое достаточно безопасно в текущем репозитории. С помощью --short=7 вы указываете, сколько шестнадцатеричных цифр использовать вместо значения по умолчанию. (Вы продолжаете говорить о «битах», но не получаете такой детализации; каждая шестнадцатеричная цифра соответствует 4 битам.)
tripleee 21.12.2020 07:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
10
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы напечатать один и тот же идентификатор только один раз,

git describe --abbrev=8

Чтобы навсегда настроить этот репозиторий так, чтобы он всегда сообщал сокращенный хэш с 8 шестнадцатеричными цифрами,

git config core.abbrev 8

Чтобы установить это постоянно для всех ваших локальных репозиториев (если репо не переопределяет его отдельно с помощью локальной конфигурации для каждого репо), добавьте --global в приведенную выше командную строку.

Когда core.abbrev не установлен, git отображает достаточно шестнадцатеричных цифр, чтобы убедиться, что напечатанный идентификатор является безопасным уникальным. Это описано в документации git-config:

core.abbrev Установите длину, до которой сокращаются имена объектов. Если не указано или установлен на "авто", соответствующее значение вычисляется на основе примерное количество упакованных объектов в вашем репозитории, которое надеюсь, этого достаточно, чтобы сокращенные имена объектов оставались уникальными для когда-то. Минимальная длина 4.

Другие вопросы по теме