Comment récupérer tous les identifiants d’object?

J’essaie d’obtenir une liste de tous les ID d’object d’un référentiel git, à l’aide de libgit2. Je n’arrive pas à trouver une méthode pour cela. Libgit2 a-t-il une méthode pour obtenir tous les ID d’object (ou les parcourir) ou dois-je les lire manuellement?

Ce que vous recherchez peut-être, c’est l’API de revision walking .

  • La description de la fonctionnalité peut être trouvée ici .
  • Un test présentant différentes stratégies de marche peut également vous aider.

Edit: Un fil de la liste de diffusion libgit2 traite spécifiquement de cela.

Une réponse plus précise de Vicent Marti (mainteneur de libgit2) est

… Il suffit de pousser chaque tête dans le walker. Vous ne recevrez pas de doublons.

Tout ce que vous avez à faire est d’insérer toutes les twigs et tous les tags dans le programme de révision pour consulter l’historique des validations de manière récursive. Veuillez noter que cela ne récupérera pas les commits en suspens (commits ou chaîne de commits qui ne sont pas référencés par une twig ni une balise).

Edit 2: Ce comportement (similaire à git log --all ) a été implémenté avec succès dans libgit2sharp (liaisons libgit2 .Net).

Edit 3: Une nouvelle fonctionnalité a récemment été fusionnée qui permettrait d’énumérer tous les objects (commits, arbres, blobs, …) stockés dans la firebase database d’objects: git_odb_foreach() .

Ce serait plus conforme au scénario de git fsck dont parlait @MasortingxFrog.

  • documentation git_odb_foreach()
  • Un test simple montrant comment utiliser l’API