Я не вижу вариант к оформлению заказа или список удаленных/местных отделений в этом модулеCheckout/Список удаленных филиалов в GIT-питона
http://gitorious.org/git-python/
Я не вижу вариант к оформлению заказа или список удаленных/местных отделений в этом модулеCheckout/Список удаленных филиалов в GIT-питона
http://gitorious.org/git-python/
После того, как вы сделали
from git import Git
g = Git()
(и, возможно, некоторая другая команда для инициализации g
в репозиторий, о котором вы заботитесь) все запросы атрибутов на g
более или менее преобразуются в вызов git attr *args
.
Поэтому:
g.checkout("mybranch")
должны делать то, что вы хотите.
g.branch()
будет отображать ветви. Однако обратите внимание, что это команды с очень низким уровнем, и они вернут точный код, который возвратит исполняемый файл git. Поэтому не ждите приятного списка. Я буду просто строкой из нескольких строк и одной строкой, имеющей звездочку в качестве первого символа.
Возможно, в библиотеке может быть лучший способ сделать это. Например, в repo.py
есть специальная команда active_branch
. Вам придется немного пройти через источник и искать себя.
к списку филиалов в настоящее время вы можете использовать:
from git import Repo
r = Repo(your_repo_path)
repo_heads = r.heads # or it's alias: r.branches
r.heads
возвращается git.util.IterableList
(наследуемыми после list
) из git.Head
объектов, так что вы можете:
repo_heads_names = [h.name for h in repo_heads]
И проверка, например. master
:
repo_heads['master'].checkout()
# you can get elements of IterableList through it_list['branch_name']
# or it_list.branch_name
Модуль упоминается в вопросе GitPython
который moved от gitorious
к Github.
У меня была аналогичная проблема. В моем случае я хотел только указать удаленные ветви, которые отслеживаются локально. Это работает для меня:
import git
repo = git.Repo(repo_path)
branches = []
for r in repo.branches:
branches.append(r)
# check if a tracking branch exists
tb = t.tracking_branch()
if tb:
branches.append(tb)
В случае нужны все удаленные филиалы, я предпочел бы работаю мерзавец непосредственно:
def get_all_branches(path):
cmd = ['git', '-C', path, 'branch', '-a']
out = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
return out
Если у вас уже есть экземпляр Repo, вы можете вызвать команды git непосредственно как: '' 'repo.git.branch ('- a')' '' – dusktreader
Просто, чтобы сделать его очевиден - получить список удаленных филиалов с тока каталог репо:
import os, git
# Create repo for current directory
repo = git.Repo(os.getcwd())
# Run "git branch -r" and collect results into array
remote_branches = []
for ref in repo.git.branch('-r').split('\n'):
print ref
remote_branches.append(ref)
когда я бегу г = Git.clone ("мерзавец ...") r.checkout ("разработка") не работает .. AttributeError: 'ул' объект не имеет атрибута 'проверку' – Mike
ok выглядит как мне нужно запустить ag = Git ("dir "), то я могу проверить – Mike
Может быть. Я просто клонировал с 'g', а затем это сработало. – Debilski