4

何も複製せずに、つまりリモートで、サブモジュールの関連する SHA-1 を特定したい。git-ls-remote はこの情報を表示しないため、最初のアプローチは gitweb から XHTML をスクレイピングし、そこから SHA-1 を引き出すことでした。

残念ながら、gitweb はサブモジュールのサポートがかなり不十分なようで、関連付けられたパスの履歴を表示しようとすると、404 および 500 の「不明なオブジェクト」エラーが表示されます。したがって、サブモジュールに関連付けられている SHA-1 を特定することは、git-link を変更した正確なコミットを特定してから、diff を次のように解析しない限り、不可能と思われます。

-Subproject commit 706187649544cb029b617548771fe96c1693be39
+Subproject commit f05b9854fca9a2e1f47449e563a33156c1085646

残念ながら、gitweb はサブモジュールで非常に壊れているため、どのコミットにこの差分が含まれているかを判断する方法が見つからないため、各コミットを徹底的に検索しない限り、それはできません。

git 1.6.4.2 および 1.6.6.1 (最新の安定版) にバンドルされている gitweb を試しました。

誰でも解決策、または各リポジトリを複製することなくこれを行う別の方法を考えることができますか? ご覧のとおり、組織内のすべてのリポジトリと、各リポジトリ内のすべてのブランチに対してこれを実行したいと考えています。これは多くのブランチです。すべてのサブモジュールのコミットのリストを取得し、古いものがあるかどうかを判断するためにこれを行っています。

唯一の解決策が各リポジトリを個別に複製し、その中でクエリを実行することである場合、それが必要になります。残念ながら、一部のリポジトリは非常に大きいため、操作全体が非常に遅くなります。

4

1 に答える 1

1

あなたが望む答えが得られるかどうかはわかりません:

サブモジュールを含むディレクトリについては、gitweb 1の「ツリー」ビューを見てください (これは、リポジトリの最上位ディレクトリである可能性があります)。m---------サブモジュールはモード文字列として持っていることで認識できます。サブモジュールごとに、特定のサブモジュールを変更したすべてのコミットのリストがある「履歴」リンクが必要です。(これには、少なくとも git バージョン 1.5.3 以降の gitweb が必要です)。

gitweb でのサブモジュールのサポートが改善されていないのは、サブモジュールのリポジトリ (git_dir) がどこにあるかを検出するのが難しいという事実が原因だと思います。

HTH

脚注:
1. 公開できる場合は、gitweb インストールへのリンクを提供していただけると助かります。

于 2010-02-05T13:43:30.330 に答える