Может быть несколько коммитов суперпроекта, которые используют один и тот же коммит субмодуля из этого субмодуля.
Если бы мы дали каждому коммиту суперпроекта и субпроекту зафиксировать имя человека, это означало бы, например,Подпроект комментирует Боб на танцах, но в понедельник Алиса привела Боба, а в среду Кэрол привела Боба.Если я покажу вам снимок того, как Боб был на танцах, и спрошу вас: Кто его привел? Вы скажете: Алиса или Кэрол?
Все, что сказано, вы можете использовать git rev-parse
на каждый коммит суперпроекта:
searchfor=$(git rev-parse HEAD) # in submodule
cd ../../ # as many ../-es as needed to get to superproject
git rev-list --branches | while read rev; do
if [ $(git rev-parse $rev:path/to/submodule) = $searchfor ]; then
echo superproject commit $rev uses submodule commit $searchfor
fi
done
Это эквивалентно просмотру каждого снимка, чтобы увидеть, кто привел Боба в в этот день.По сути, вы найдете Алису и Кэрол.
(Сценарий, приведенный выше, довольно небрежный и не проверен - он просто предназначен для иллюстрации метода.)