Как определить подмодуль SHA-1 с помощью gitweb?

Я хочу определить связанный SHA-1 подмодуля без клонирования чего-либо - т.е. удаленно. git-ls-remote не показывает эту информацию, поэтому мой первоначальный подход состоял в том, чтобы очистить XHTML от gitweb и вытащить SHA-1 оттуда.

К сожалению, gitweb, похоже, плохо поддерживает подмодули, показывая 404 и 500 ошибок "неизвестного объекта" при попытке просмотреть историю для соответствующего пути. Поэтому мне кажется невозможным определить связанный SHA-1 подмодуля, если я не могу определить точную фиксацию, которая изменила git-link, а затем проанализировать diff для чего-то вроде:

-Subproject commit 706187649544cb029b617548771fe96c1693be39
+Subproject commit f05b9854fca9a2e1f47449e563a33156c1085646

К сожалению, gitweb настолько сломан с подмодулями, что я не могу найти способ определить, какой коммит содержит этот diff, поэтому, если я не выполню исчерпывающий поиск по каждому коммиту, это не нужно.

Я пробовал с gitweb в комплекте с git 1.6.4.2 и 1.6.6.1 (последняя стабильная версия).

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

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

1 ответ

Я не уверен, что это даст вам ответ, который вы хотите:

Посмотрите на представление дерева в gitweb1 для каталога, который содержит подмодуль (это может быть верхний каталог вашего хранилища). Вы можете узнать субмодуль по тому, что он имеет m--------- как строка режима. Для каждого подмодуля у вас должна быть ссылка "история", где вы будете иметь список всех коммитов, которые изменили данный подмодуль. (Это требует gitweb по крайней мере из git версии 1.5.3).

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

НТН

Примечания:
1. Было бы полезно, если бы вы предоставили ссылку на установку gitweb, если бы ее можно было сделать общедоступной.

Другие вопросы по тегам