Получить мастер-коммит из субмодульного коммита - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть главный репозиторий с двумя подмодулями.Когда я делаю git submodule status в master, это дает мне недавний коммит в подмодулях.Но как я получу соответствующий коммит мастера.

Я вижу только, когда я делаю git log

Пример:

commit d111aeec...........28a7
Author: <author_name>
Date:   Mon Sep 24 17:01:01 2018 +0200

    Updated submodules: submodule1 -> ( 45d60a5 ) 

    Submodule 'submodule1 ' commits:
    *  45d60a5  - Some commit (author_name)

Мне нужно d111aeec ........... 28a7 .У меня есть 45d60a5 .

Редактировать: Причина, по которой я спрашиваю об этом, в моем проекте, у меня есть механизм тегирования, который помечает коммиты субмодуля.Мне нужен тот же тег для соответствующего коммита в супер хранилище.Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 26 сентября 2018

Может быть несколько коммитов суперпроекта, которые используют один и тот же коммит субмодуля из этого субмодуля.

Если бы мы дали каждому коммиту суперпроекта и субпроекту зафиксировать имя человека, это означало бы, например,Подпроект комментирует Боб на танцах, но в понедельник Алиса привела Боба, а в среду Кэрол привела Боба.Если я покажу вам снимок того, как Боб был на танцах, и спрошу вас: Кто его привел? Вы скажете: Алиса или Кэрол?

Все, что сказано, вы можете использовать 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

Это эквивалентно просмотру каждого снимка, чтобы увидеть, кто привел Боба в в этот день.По сути, вы найдете Алису и Кэрол.

(Сценарий, приведенный выше, довольно небрежный и не проверен - он просто предназначен для иллюстрации метода.)

...