Флаг --abbrev-commit
может использоваться совместно с git log
и git rev-list
, чтобы показать частичные префиксы вместо полных 40-символьных SHA-1 хэшей объектов фиксации. Согласно Pro Git book,В моем репо, как долго должен быть длинный префикс хэша, чтобы предотвратить перекрытие?
По умолчанию этого значения, используя семь символов, но делает их более, если это необходимо, чтобы сохранить SHA-1 однозначный [...]
Кроме того, короткие ПОР, по крайней мере 4- знак длинный. Тем не менее, согласно книге Pro Git,
Как правило, от восьми до десяти символов более чем достаточно, чтобы быть уникальным в рамках проекта.
В качестве примера, ядро Linux, которое представляет собой довольно большой проект с более чем 450 тыс. Кометами и 3,6 миллиона объектов, не имеет двух объектов, SHA-1 которых перекрываются больше, чем первые 11 символов.
Так как длина самого длинного префикса, необходимый для предотвращения любого дублирования среди всех префиксных хэш совершающих объектов (11, в случае ядра Linux) является грубым показателем размера репо, я хотел бы программно определить соответствующее количество в моем собственном локальном репозитории. Как я могу это сделать?
Вы хотите сказать http://stackoverflow.com/a/21015031/3691891? –
@ ArkadiuszDrabczyk Не совсем. Ваша ссылка дает только способ определения того, насколько коротким может быть префикс заданного хеша харда, чтобы избежать совпадения с другим хэшем. Я запрашиваю максимум этого количества по всем хэшам фиксации в репозитории. – Jubobs
Вы не можете * строго определить длину требуемого префикса, не изучая все фиксации в репо. В принципе, у репо может быть только две коммиты, идентичные в первых 39 символах. И фактическая требуемая длина может измениться со следующей фиксацией. –