2011-08-19 4 views
6

Je veux écrire un module en python (Ceci est le projet d'apprentissage) pour améliorer mon expérience git. Y at-il un module python pour différentes commandes git? Au moins les bases (commit/diff/log/add)? J'ai vu GitPython mais je n'ai pas trouvé le support pour (nouveau) commits; c'est plus un cadre de navigation repo qu'une interface complète GIT. (Ou est-ce que j'ai manqué quelque chose?)Git commit de python

De même, s'il y a un module python pour tout ceci, cela sera-t-il préférable, ou l'exécution des commandes du shell à partir du code python?

Répondre

10

En GitPython vous create a commit from an index object.

Dans libgit2 vous create a commit from a repository object.

Vous pouvez également regarder cette question:

+1

+1 pour libgit2. –

+0

Merci beaucoup pour le lien "git python experience". Je pourrais peut-être baser ma décision là-dessus. – Sailesh

+0

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. –

9

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