1
votes

Analyser les objets git pour la validation sans extraction

Existe-t-il un moyen de lire tous les fichiers relatifs à un commit git sans exécuter git checkout? Un commit ne pointe-t-il pas vers un groupe d'objets blob dans le dossier .git? Existe-t-il un moyen de lire ces objets blob directement à partir d'un identifiant de validation? ou est-il simplement plus simple d'exécuter git checkout ? J'essaie juste de vérifier les fichiers pour des vulnérabilités telles que les mots de passe en texte brut, etc.


0 commentaires

3 Réponses :


1
votes

Il y a git unpack-file $ blob_id , qui dépose une copie du contenu de l'objet blob à la racine de l'arbre de travail avec un nom indésirable, qu'il affiche.

Il y a aussi git cat -file --batch , qui prend un format optionnel et quelques ajustements supplémentaires, et redirige toute la sortie demandée. Si vous avez le contrôle de la gestion des entrées de votre outil d'audit, ce sera de loin le plus efficace:

git ls-files -s | cut -d' ' -f2- \
| git cat-file --batch='%(objectname) %(objectsize) %(rest)' \
| your audit tool

et pour un commit, il commencerait git ls- arbre -r $ thatcommit | couper -d '' -f3-


0 commentaires

1
votes

Pour voir un objet (et l'obtenir sur stdout), vous pouvez faire:

git show some-branch-or-revision:file-path
git cat-file -p object-id

L'un ou l'autre de ces éléments fonctionnerait.


0 commentaires

1
votes

... et pour voir une liste des fichiers contenus dans un commit, utilisez

git ls-tree -r <commit id>

Cette liste contiendra les identifiants blob des données du fichier, vous pouvez donc utiliser cat-file comme mentionné dans les autres réponses.


0 commentaires