Gitpython для инициализации и запуска нового репо - PullRequest
0 голосов
/ 21 ноября 2018

Итак, я пытаюсь использовать gitpython (https://gitpython.readthedocs.io/en/stable/intro.html), чтобы сделать что-то относительно простое, но у меня возникают проблемы.

Итак, у меня есть пустой новый репозиторий на моем сервере битбакетов, затем яЯ использую gitpython для инициализации локального репо, добавления файла и успешной фиксации.

Однако у меня возникают проблемы с внесением этих изменений в новое пустое удаленное репозиторий с битбакетом, которое у меня есть.пробовал несколько вещей, но я всегда получаю git push --set-upstream origin master, когда возвращается ошибка. Но когда я перехожу в каталог репо, я вижу его в основной ветке, и я вижу URL удаленного репо при запуске git status и git remote -v.

def commit_files(url):
    repo_dir = os.path.join(os.getcwd(), 'tmp')
    file_name = os.path.join(repo_dir, 'Jenkinsfile')

    repo = git.Repo.init(repo_dir)
    open(file_name, "wb").close()
    repo.index.add([file_name])
    repo.index.commit("initial commit")
    repo.create_remote("origin", url=url)
    repo.remote("origin").push()

Вся документация и сообщения SO, которые я обнаружил, похоже, перешли на подталкивание к уже существующему репо после клонирования.

1 Ответ

0 голосов
/ 21 ноября 2018

Удалось найти обходной путь, просто клонировав пустой репо, внеся изменения и нажав.Не то, что я хотел, а достаточное решение.Также необходимо предоставить учетные данные аутентификации в моем случае.

def commit_files(url):
    repo_dir = os.path.join(os.getcwd(), 'tmp')
    file_name = os.path.join(repo_dir, 'Jenkinsfile')

    repo = git.Repo.clone_from(url, repo_dir, env={"GIT_SSH_COMMAND": 'ssh -i /PATH/TO/KEY'})
    open(file_name, "wb").close()
    repo.index.add([file_name])
    repo.index.commit("initial commit")
    repo.remote("origin").push()

    return
...