Git est conçu pour être composé de "plomberie" et de "porcelaine". Les composants de plomberie constituent la base, système de bas niveau: gestion des objets, des référentiels, des télécommandes, etc. D'autre part, la porcelaine signifie des outils de haut niveau plus conviviaux qui utilisent la plomberie.
Historiquement, seules les parties les plus basiques/de performance critique (principalement la plomberie) ont été implémentées en C, les autres scripts shell/perl étant utilisés. Pour être plus portable, de plus en plus de code a été réécrit en C.
Avec cet arrière-plan, je recommande de simplement utiliser les appels système à l'exécutable git pour votre habillage python. Considérez votre code comme faisant partie de la porcelaine de Git. Par rapport à l'utilisation d'une bibliothèque spécialisée:
PRO
- Pas besoin d'apprendre une API - utiliser les commandes
git
que vous connaissez
- Ensemble complet d'outils - vous pouvez utiliser la porcelaine et ne sont pas limités à des fonctionnalités de bas niveau
CONTRA
- Nécessité d'analyser la sortie de la ligne de commande à partir des appels
git
.
- peut être plus lente
+1 pour libgit2. –
Merci beaucoup pour le lien "git python experience". Je pourrais peut-être baser ma décision là-dessus. – Sailesh
Vous devez garder à l'esprit que (à cause de la date) ces réponses ne mentionnent pas les bindings Python basés sur libgit2, ce qui est intéressant parce que libgit2 library est une bibliothèque ré-entrante pour interagir avec les dépôts git. De plus, le simple fait d'utiliser le module de sous-processus pour invoquer des commandes git (comme le suggère @Ferdinand Beyer) a bien fonctionné pour moi dans beaucoup de scripts, et peut être tout ce dont vous avez besoin. –