2015-02-16 3 views
1

Я начинаю с python и пытаюсь использовать GitPython, и я отчаянно пытаюсь сделать этот модуль работоспособным.Git Python кажется не работает

Я видел на многих сайтах, что документация плохая, и пример, который я следую, не работает.

Я попробовать это на Windows (2012/Python 3.5):

# -*-coding:Latin-1 -* 

from git import * 

path = ('C:\\Users\\me\\Documents\\Repos\\integration') 
repo = Repo(path) 
assert repo.bare == False 

repo.commits() 

os.system("pause") 

И это на Linux (Debian/Python 2.7):

from git import Repo 

repo = Repo('/home/git/repos/target_repos') 
assert repo.bare == False 

repo.commits() 

Но в любом случае, у меня нет результат ... И закончите с этой ошибкой:

Traceback (most recent call last): 
    File "gitrepo.py", line 6, in <module> 
    repo.commits() 
AttributeError: 'Repo' object has no attribute 'commits' 

в двух случаях.

Мой вопрос заключается в следующем:

  1. Есть ли способ, чтобы сделать этот модуль работает? Все ссылки, которые я нашел, являются старыми ...
  2. Если да, пожалуйста, помогите мне или дайте мне пример.
  3. Если нет, есть ли еще один модуль? Я пытаюсь установить Dulwich, но не успешно (только для Windows)
  4. Я видел, что есть способ, используя fab? Можно ли манипулировать git этим?

Целью является управление git с помощью python в будущем, а также другие возможности для интеграции.

Благодарим вас за ответ.

+0

Что делает 'repo.head'? – Ryan

+0

, когда я поставил этот 'repo.head()' в свой файл file.py, я понял, что 'TypeError: 'HEAD' объект не вызываем', если это ваш вопрос? – Algorys

+0

@minitech Есть ли у меня что-то еще для настройки раньше? – Algorys

ответ

4

Модуль работает нормально, вы не используете его должным образом. Если вы хотите получить доступ к записям в репозитории git, используйте Repo.iter_commits(). Метод commits(), который вы пытаетесь использовать, не существует в GitPython.Repo. Вы можете проверить официальную документацию модуля here для всех поддерживаемых операций и атрибутов.

Ниже рабочего примера

from git import Repo, Commit 

path = "test_repository" 

repo = Repo(path) 

for commit in repo.iter_commits(): 
    print "Author: ", commit.author 
    print "Summary: ", commit.summary 

Это показывает автор и резюме для каждой фиксации в хранилище. Проверьте документацию объекта Commit на операции и доступ к дополнительной информации, которую они несут (например, хеш фиксации, дата и т. Д.)

+0

Хорошо. На самом деле, когда я набираю команду с помощью python -v, у меня есть некоторые результаты: с помощью 'repo.untracked_files' он отображает неиспользуемые файлы. Но с 'repo.iter_commits()' он выдает что-то странное: '<объект-генератор Commit._iter_from_process_or_stream при 0x0000000F94E4EDB0>' ... Я буду работать над документацией. – Algorys

+0

проверить обновленный ответ для рабочего примера. –

+0

Большое спасибо. Это дает мне хороший стартовый пример и отлично работает. – Algorys

Смежные вопросы