Как отправить локальные файлы на GitHub с помощью Python? (или опубликовать коммит через Python) - PullRequest
0 голосов
/ 28 апреля 2018

Какие есть варианты для отправки и отправки файлов в github из python?

Вот три метода, которые я считал целесообразными, поэтому попытайтесь по порядку:

  1. Используйте pygithub : (Python API Github) для отправки push-запросов в мой репозиторий. Ошибка, потому что я не могу найти функции push в API. Я вижу файлы редактирования, но это не помогает, если я планирую часто заменять файл.

  2. Использовать git push в командной строке из подпроцесса python (HTTPS): Это почти работает, но я не могу понять, как заполнить обязательные поля пользователя и пароля. Попытка:

    import subprocess
    from pexpect import popen_spawn
    
    
    user = 'GithubUsername'
    password = '***********'
    
    cmd = "cd C:\\Users\Dropbox\git-test"
    returned_value = subprocess.call(cmd, shell=True)  # returns the exit code in unix
    
    cmd = "git add ." 
    subprocess.call(cmd, shell=True)
    
    cmd = 'git commit -m "python project update"'
    subprocess.call(cmd, shell=True)
    
    cmd = "git remote set-url origin https://github.com/Tehsurfer/git-test.git"
    subprocess.call(cmd, shell=True)
    
    cmd = "git push "
    child_process = popen_spawn.PopenSpawn(cmd)
    child_process.expect('User')
    child_process.sendline(user)
    child_process.expect('Password')
    child_process.sendline(password)
    print('returned value:', returned_value)
    
    print('end of commands')`
    
  3. Использование git push в командной строке из подпроцесса python (SSH): Проблема, с которой я столкнулся, заключается в том, что я не могу найти способ создания агента ssh в командной строке Windows. Я смог достаточно легко создать его в терминале MINGW64 с помощью этого учебного пособия , но у меня нет способа взаимодействия с ним через Python.

1 Ответ

0 голосов
/ 28 апреля 2018

Как загрузить новые файлы в GitHub?

Очень похожий вопрос, чей код я смог изменить, чтобы сделать несколько загрузок файлов в github через python:

import base64
from github import Github
from github import InputGitTreeElement

user = "GithubUsername"
password = "*********"
g = Github(user,password)
repo = g.get_user().get_repo('git-test')
file_list = [
    'C:\\Users\jesse\Dropbox\Swell-Forecast\git-test\index.html',
    'C:\\Users\jesse\Dropbox\Swell-Forecast\git-test\margin_table.html'
]

file_names = [
    'index.html',
    'margin_table.html'
]
commit_message = 'python update 2'
master_ref = repo.get_git_ref('heads/master')
master_sha = master_ref.object.sha
base_tree = repo.get_git_tree(master_sha)
element_list = list()
for i, entry in enumerate(file_list):
    with open(entry) as input_file:
        data = input_file.read()
    if entry.endswith('.png'):
        data = base64.b64encode(data)
    element = InputGitTreeElement(file_names[i], '100644', 'blob', data)
    element_list.append(element)
tree = repo.create_git_tree(element_list, base_tree)
parent = repo.get_git_commit(master_sha)
commit = repo.create_git_commit(commit_message, tree, [parent])
master_ref.edit(commit.sha)
...