Получить хеш подмодуля в предыдущей версии основного репо без проверки - PullRequest
0 голосов
/ 17 мая 2018

У меня есть репо с подмодулем в нем.

Я могу легко получить текущий хеш подмодуля из рабочего каталога:

cd submodule
git rev-list HEAD | head -n 1

Однако меня также интересуетхэш в предыдущих версиях основного репо.Я могу получить его, если действительно проверю эту версию:

git checkout some_tag
cd submodule
git rev-list HEAD | head -n 1

Однако я не могу использовать git checkout .Есть ли способ получить этот хэш без проверки старого тега?

1 Ответ

0 голосов
/ 17 мая 2018

Используйте git rev-parse (который также является правильным инструментом для считывания значения HEAD):

git rev-parse some_tag:submodule

Это читает запись gitlink из дерева объект , для которого some_tag может быть разрешен, используя предоставленный путь.Чтобы увидеть, как это работает, используйте:

tree=$(git rev-parse some_tag^{tree})
git ls-tree -r $tree

(опция -r требуется только в том случае, если путь субмодуля находится не на верхнем уровне хранилища).Обратите внимание, что запись дерева для подмодуля просто 160000 commit <hash> <path>: таким образом, суперпроект знает, какой хеш-идентификатор коммита использовать в подмодуле.

...