Преимущество gitPython перед выполнением команды git с подпроцессом?

Я недавно сделал команду git, используя python, которая выполняет команду git, используя subproces.Popen поэтому я спорю, стоит ли воспользоваться gitPython модуль или нет? Имеет ли это какое-то значение, если gitpython модуль используется?

3 ответа

Для меня GitPython имеет много преимуществ. На мой взгляд, наиболее важным является то, что результаты команд являются объектами Python, поэтому вы выполняете и получаете объект с типизированными свойствами и методами. Это дает вам лучшие результаты перед лицом неожиданного, например: нет удаленного, имя ветки отличается от того, что вы думаете, и т. Д.

repo = git.Repo('/home/user/my_project')
print(repo.branches)

А из вышесказанного следует, например, что вы можете перебирать результаты таких команд, как удаленные, ветки.

for branch in repo.branches:
    print(branch)

Такие вещи становятся действительно громоздкими, очень быстро с сырой командной строкой.

И я думаю, что GitPython имеет более полную поддержку функций git, чем gittle, например, поддержку подмодулей.

С помощью модуля подпроцесса легче начать работу. Кажется, чтобы заставить gitPython работать, требуется больше времени. В зависимости от вашего проекта может быть проще использовать подпроцесс. Если вы думаете о том, чтобы идти по маршруту подпроцесса, sh также стоит проверить. http://amoffat.github.io/sh/ sh позволяет вам вызывать программу, как если бы она была функцией. Кроме того, вы заглянули в https://github.com/FriendCode/gittle - было бы неплохо, если вы просто хотите автоматизировать команды Git.

например:

import sh
git = sh.git.bake(_cwd='/home/me/repodir')
print git.status()
# checkout and track a remote branch
print git.checkout('-b', 'somebranch')
# add a file
print git.add('somefile')
# commit
print git.commit(m='my commit message')
# now we are one commit ahead
print git.status()

больше информации: опыт работы с Python Git Module?

IMO, это конкретная версия общего вопроса: "что-то, что делает то, что я хочу, уже существует, я должен написать это сам с нуля?" Ответ почти всегда нет *.

Я также скажу, что для тех, кто смотрел GitPython, когда этот вопрос был написан (то есть до выпуска 1.0.0 в апреле 2015 года), вам стоит взглянуть на него еще раз, в последнее время проект значительно продвинулся.

GitPython - это:

  • открытый исходный код, проект сообщества
  • Pythonic интерфейс для мерзавца
  • хорошо протестирован с автоматизированными юнит-тестами
  • используется сотнями или тысячами людей, что означает, что ошибки идентифицируются гораздо быстрее, чем в коде, который вы написали сами
  • поддерживается людьми, которые действительно понимают, мерзавец
  • написано кем-то, кроме вас, так что вы можете сосредоточиться на том, что вы на самом деле хотите делать с Git
  • очень хорошо подходит для работы с запросами по запросу, поэтому, если что-то не хватает и вам нужно, вы можете добавить его
  • лицензируется по лицензии BSD, поэтому, если ваш проект предназначен для компании, не ориентированной на открытый исходный код, у вас нет проблем, связанных с лицензией GPL или более агрессивными лицензиями с авторским левом

* Да, есть некоторые причины, по которым необходимо что-то писать самостоятельно, будь то юридическая или офисная политика или просто синдром NIH. Я бы сказал, что все это крайние случаи.

Другие вопросы по тегам