Преимущество 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. Я бы сказал, что все это крайние случаи.