Git сантехнические команды для обнаружения обновления субмодуля и получения хэшей в промежуточной области или рабочем каталоге

В режиме фарфора, git diff рекламирует изменения субмодуля:

$ cd /opt/staging # This is the main Git repository
$ cd software/zemke-rhyne # This is a submodule
$ git pull
$ git diff                                                                                                                  
diff --git a/software/zemke-rhyne b/software/zemke-rhyne
index 0fff2fc..cb69287 160000
--- a/software/zemke-rhyne
+++ b/software/zemke-rhyne
@@ -1 +1 @@
-Subproject commit 0fff2fc52bdc2a62a2647110e712b1b3baa48613
+Subproject commit cb69287a3540054ff85cd14199cf36b4b5098c1a

Какие сантехнические команды могут дать следующую информацию?

  • обновлен субмодуль, тут софт / земке-рина
  • старый хеш, здесь 0fff2fc52bdc2a62a2647110e712b1b3baa48613
  • новый хеш, здесь cb69287a3540054ff85cd14199cf36b4b5098c1a

Например, цель состоит в том, чтобы автоматизировать сообщение коммита для краткого документирования изменений в обновленном подмодуле с помощью git rev-list.

1 ответ

Чтобы узнать, был ли обновлен субмодуль, вы можете использовать

$ git diff-files --quiet software/zemke-rhyne

Статус выхода будет указывать, является ли подмодуль актуальным (0) или устаревшим (1).

Старый хеш показан, например, ls-tree:

$ git ls-tree @ software/zemke-rhyne
160000 commit 0fff2fc52bdc2a62a2647110e712b1b3baa48613  software/zemke-rhyne

Другой способ будет

$ git ls-files -s software/zemke-rhyne
160000 0fff2fc52bdc2a62a2647110e712b1b3baa48613 0   software/zemke-rhyne

(Какая разница? Было бы здорово, если бы кто-то мог прокомментировать...)

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

$ git diff-files software/zemke-rhyne
:160000 160000 0fff2fc52bdc2a62a2647110e712b1b3baa48613 0000000000000000000000000000000000000000 M  software/zemke-rhyne

К несчастью, diff-files упускает прекрасную возможность также показать обновленный хэш. Чтобы увидеть это, все, что я мог придумать, это использовать rev-list в каталоге подмодулей. Это кажется немного неуравновешенным и хрупким...

$ git -C software/zemke-rhyne rev-list -n 1 @
cb69287a3540054ff85cd14199cf36b4b5098c1a
Другие вопросы по тегам