2010-02-05 5 views
4

Je veux déterminer le SHA-1 associé d'un sous-module sans rien cloner, c'est-à-dire à distance. git-ls-remote ne montre pas cette information, donc mon approche initiale consistait à gratter le XHTML de gitweb et à sortir le SHA-1 de là.Comment déterminer le sous-module SHA-1 avec gitweb?

Malheureusement, gitweb semble avoir un très mauvais support pour les sous-modules, montrant 404 et 500 "objets inconnus" erreurs en essayant de voir l'historique pour le chemin associé. Par conséquent, il ne me semble pas possible de déterminer le SHA-1 associé d'un sous-module à moins que je peux identifier la validation exacte qui a modifié le git-lien, puis analyser la diff pour quelque chose comme:

-Subproject commit 706187649544cb029b617548771fe96c1693be39 
+Subproject commit f05b9854fca9a2e1f47449e563a33156c1085646 

Malheureusement gitweb est tellement brisé avec des sous-modules que je ne peux pas trouver un moyen de déterminer quel commit contient ce diff, donc à moins de faire une recherche exhaustive à travers chaque commit, c'est un non-go.

J'ai essayé avec gitweb fourni avec git 1.6.4.2 et 1.6.6.1 (dernière version stable). Quelqu'un peut-il penser à une solution, ou peut-être un moyen alternatif de le faire sans avoir à cloner chaque référentiel. Vous voyez, je veux faire cela pour tous les dépôts de notre organisation, et pour chaque branche dans chaque dépôt, et c'est beaucoup de branches. Je fais cela pour obtenir une liste de tous les sous-modules et déterminer si certains sont obsolètes. Si la seule solution est de cloner individuellement chaque référentiel et d'exécuter des requêtes à l'intérieur, alors cela devra l'être. Malheureusement, certains de nos dépôts sont assez volumineux, ce qui rend l'opération très lente.

Répondre

1

Je ne sais pas si cela vous donne la réponse que vous voulez:

Jetez un oeil à vue « arbre » dans gitweb pour un répertoire qui contient le sous-module (cela pourrait être top dir de votre référentiel). Vous pouvez reconnaître submodule par le fait qu'il a m--------- comme chaîne de mode. Pour chaque sous-module, vous devriez avoir un lien 'history', où vous auriez la liste de tous les commits qui ont changé en fonction du sous-module. (Cela nécessite gitweb au moins de git version 1.5.3).

Le manque de meilleur support de sous-module dans gitweb est, je pense, causé par le fait qu'il est difficile de détecter où se trouve le dépôt (le git_dir) pour un sous-module.

HTH

Notes:
1. Il serait utile si vous avez fourni lien vers gitweb installation, si elle pouvait être rendue publique.

+2

Malheureusement ce lien "historique" donne l'erreur 500 "objet inconnu" pour tous les sous-modules. Je ne peux pas rendre le repo public sans passer par trop de cerceaux juridiques, mais si je ne trouve pas de solution, je peux rendre un rapport similaire publiquement disponible. Merci de votre réponse. – meowsqueak

+0

Le commentaire ci-dessus de @meowsqueak est toujours vrai. Ici: Debian Wheezy, gitweb 1.7.10.4. – weeheavy