使用SSH密钥时如何使用GitPython执行"git push"?
How to use GitPython to perform "git push" when using SSH Keys?
我正在尝试编写一个 Python 控制器,它将帮助我自动化 Git - 用法。我已经得到了所有其他命令的工作 - 但我在使用 GitPython 库时遇到 git push
等价物的困难。
这就是我现在所在的位置。这应该在没有 SSH 密钥标识的情况下工作,但我必须将其压缩。
""" Execute Git Push with GitPython Library.
Hardcoded values: 'branch' environment.
TODO: This is not working. """
def push(self, repo_path, branch, commit_message, user):
repo = Repo(repo_path)
repo.git.add('--all')
repo.git.commit('-m', commit_message)
origin = repo.remote(name=branch)
origin.push()
这就是我的初始化。 (由于隐私原因清除了一些值。)
load_dotenv()
self.BRANCH = "TBD" # Hardcoded Value
self.REPO_PATH = os.getenv('REPO_PATH')
self.REPO = Repo(self.REPO_PATH)
self.COMMIT_MESSAGE = '"Commit from Controller."'
# TODO: These should be changed, when deployed.
self.GIT_SSH_KEY = os.path.expanduser('/home/user/.ssh/id_rsa')
self.GIT_SSH_CMD = "ssh -i %s" % self.GIT_SSH_KEY
self.GIT_USER = "user" # This needs to be changed.
根据我对这个 () 的理解,这里的策略是使用 GIT_SSH
环境变量来提供可执行文件,这将调用 ssh
- 但由于我是初学者,我无法理解该环境变量究竟应该包含什么,以及如何用 push
函数包装它。
提前致谢!
首先,在 self
上设置值本身不会完成任何事情,除非您有部分代码没有向我们展示。如果需要设置 GIT_SSH
环境变量,则需要设置 os.environ['GIT_SSH']
.
一般来说,您不需要设置 GIT_SSH
除非您需要一个非默认的 ssh 命令行。也就是说,如果我有:
$ git remote -v
origin ssh://git@github.com/larsks/gnu-hello (fetch)
origin ssh://git@github.com/larsks/gnu-hello (push)
那我可以写:
>>> import git
>>> repo = git.Repo('.')
>>> origin = repo.remote('origin')
>>> res = origin.push()
>>> res[0].summary
'[up to date]\n'
我不需要在这里设置任何特别的东西;默认值是完全合适的。在幕后,GitPython 只是调用 git
命令行,所以任何与 cli 一起工作的东西都应该在没有特殊配置的情况下正常工作。
我正在尝试编写一个 Python 控制器,它将帮助我自动化 Git - 用法。我已经得到了所有其他命令的工作 - 但我在使用 GitPython 库时遇到 git push
等价物的困难。
这就是我现在所在的位置。这应该在没有 SSH 密钥标识的情况下工作,但我必须将其压缩。
""" Execute Git Push with GitPython Library.
Hardcoded values: 'branch' environment.
TODO: This is not working. """
def push(self, repo_path, branch, commit_message, user):
repo = Repo(repo_path)
repo.git.add('--all')
repo.git.commit('-m', commit_message)
origin = repo.remote(name=branch)
origin.push()
这就是我的初始化。 (由于隐私原因清除了一些值。)
load_dotenv()
self.BRANCH = "TBD" # Hardcoded Value
self.REPO_PATH = os.getenv('REPO_PATH')
self.REPO = Repo(self.REPO_PATH)
self.COMMIT_MESSAGE = '"Commit from Controller."'
# TODO: These should be changed, when deployed.
self.GIT_SSH_KEY = os.path.expanduser('/home/user/.ssh/id_rsa')
self.GIT_SSH_CMD = "ssh -i %s" % self.GIT_SSH_KEY
self.GIT_USER = "user" # This needs to be changed.
根据我对这个 (GIT_SSH
环境变量来提供可执行文件,这将调用 ssh
- 但由于我是初学者,我无法理解该环境变量究竟应该包含什么,以及如何用 push
函数包装它。
提前致谢!
首先,在 self
上设置值本身不会完成任何事情,除非您有部分代码没有向我们展示。如果需要设置 GIT_SSH
环境变量,则需要设置 os.environ['GIT_SSH']
.
一般来说,您不需要设置 GIT_SSH
除非您需要一个非默认的 ssh 命令行。也就是说,如果我有:
$ git remote -v
origin ssh://git@github.com/larsks/gnu-hello (fetch)
origin ssh://git@github.com/larsks/gnu-hello (push)
那我可以写:
>>> import git
>>> repo = git.Repo('.')
>>> origin = repo.remote('origin')
>>> res = origin.push()
>>> res[0].summary
'[up to date]\n'
我不需要在这里设置任何特别的东西;默认值是完全合适的。在幕后,GitPython 只是调用 git
命令行,所以任何与 cli 一起工作的东西都应该在没有特殊配置的情况下正常工作。