问题标签 [gitpython]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
843 浏览

python - 你如何定义 Fabric 推送到 GitHub 的主机?

原始问题

我有一些 python 脚本,它们一直在使用 Amazon S3 上传脚本中 Selenium 测试后拍摄的屏幕截图。

现在我们正在从 S3 转移到使用 GitHub,所以我找到了 GitPython,但看不到您如何使用它来实际提交到本地 repo 并推送到服务器。

我的脚本构建了一个类似于\images\228M\View_Use_Case\1.png工作区中的目录结构,当上传到 S3 时,这是一个简单的过程;

是否有类似的东西,或者git add images我完全错过了 GitPython 中的 bash 类型命令这样简单的东西?

用织物更新

因此,我根据 kracekumar 的建议安装了 Fabric,但找不到有关如何定义(GitHub)主机的文档。我的脚本非常简单,只需尝试上传即可;

它有效 \o/ 万岁。

0 投票
3 回答
2808 浏览

gitpython - 检查对象是否在 gitpython 的仓库中

我正在开发一个将在 git repo 中添加和更新文件的程序。由于我无法确定我正在使用的文件当前是否在 repo 中,我需要检查它的存在 - 这个操作似乎比我想象的要难。

'in' 比较似乎不适用于 gitpython 中树的非根级别。前任。

所以我想知道,人们如何在尝试处理给定文件之前检查给定文件是否在 git 树中?尝试访问不在树中的文件的对象将引发 KeyError,因此我可以尝试捕获。但这感觉像是在例行存在检查中使用异常处理很糟糕。

我错过了一些非常明显的事情吗?如何使用 gitpython(或 Python 中的任何库/方法)检查​​提交树中是否存在文件?

自我回答

好的,我在Tree 类中四处挖掘,看看 __contains__ 做了什么。事实证明,在子文件夹中搜索时,必须使用来自 repo 根目录的完整相对路径来检查文件是否存在。所以我上面所做的检查的工作版本是:

0 投票
3 回答
4607 浏览

git - GitPython通过sha获取树和blob对象

我正在使用带有裸存储库的 GitPython,并且试图通过其 SHA 获取特定的 git 对象。如果我直接使用 git,我会这样做

由于我使用的是 GitPython,并且我想获得一棵特定的树,因此我执行以下操作:

把这个拿回来

现在我有一个树对象,但我无法访问它的属性,如路径、名称、blob 等。

但是如果我输入以下内容,它会起作用

我的问题的另一部分是如何使用 GitPython 获取 blob 对象。我注意到唯一的对象树有属性 blob,所以为了通过 SHA 获取 blob,我必须 (a) 首先知道它属于哪个树,(b) 找到这个 blob,然后 (c) 调用data_stream方法。我可以做

但我想首先知道这是做到这一点的唯一方法。

0 投票
1 回答
6824 浏览

python - OSError: [Errno 2] GitPython 上没有这样的文件或目录

我正在使用 GitPython 将远程存储库获取到我的机器。以下代码在我的 Ubuntu 12.04 上运行良好,但在我的 amazon ec2 上,在 Ubuntu 11.10 服务器上,我收到 OSError: [Errno 2] No such file or directory 错误。

当我在脚本中运行该块时,我没有收到任何错误消息。但是当我在交互式 shell 上尝试这些步骤时,我得到了这个堆栈跟踪:

但是我的本地机器上没有这样的问题。不知道出了什么问题。任何帮助将不胜感激!

0 投票
3 回答
6853 浏览

python - 使用 GitPython 模块获取远程 HEAD 分支

我正在尝试使用 GitPython 编写一些 Python 脚本,当我管理许多分支时,我可以使用它来简化我的日常任务。

在编写复杂的脚本时,我对 Python 也很陌生。

这是我使用的 API:GitPython API doc

我想用 GitPython 编写它,它只执行以下操作并解析出显示 HEAD 远程分支指向的部分。换句话说,我想基本上得到remotes/origin/HEAD

我多次浏览 API 文档,起初我无法理解这些 API 文档的 Python 格式,除了remote_headclass git.refs.reference.Reference(repo, path, check_path=True)

但我什至不知道如何调用/初始化它。

这是我到目前为止所做的,你可以告诉我我正在尝试做什么,只需重置为“无分支”状态并删除我所在的当前分支:

任何帮助深表感谢!

谢谢。

0 投票
2 回答
797 浏览

python - 无法遵循 python git 教程

我最近安装了 python-git 包,当尝试按照以下链接的教程进行操作时,我发现某些方法丢失了......

http://packages.python.org/GitPython/0.3.2/tutorial.html#tutorial-label

这是我的解释器的结果:

0 投票
2 回答
3646 浏览

python - 如何使用 gitpython 自动推送到 repo

我正在尝试制作一个 python 脚本来检查我的 git 本地工作文件夹中的更改,并自动将它们推送到在线仓库。目前只能手动使用 git 来完成。我想知道,在没有人工干预的情况下,脚本需要什么才能做到这一点。

我在 shell 中输入的命令是:

执行 git push 时,您总是需要输入用户名/密码。我知道 git 有办法解决这个问题,包括制作 ssh 密钥等等。但我假设 GitPython 有某种方式可以做到这一点。我的意思是我们可以通过代码传递用户名/密码,或者使用前者。那么当我使用 GitPython 时,我有哪些关于身份验证的选项?

编辑:有些应用程序实际上会生成 ssh 密钥,例如 github 的 windows 应用程序。windows应用程序是如何做到这一点的?我的假设是肯定有一些 git api 用于它......

0 投票
3 回答
9907 浏览

python - 如何使用 gitPython 执行 git reset --hard?

好吧,标题是不言自明的。与使用GitPython模块运行git reset --hard(在终端上)等效的 python 代码是什么?

0 投票
1 回答
3100 浏览

git - GitPython 从远程分支创建本地分支

我有多台实验室机器,我需要在本地实验室机器上复制我的远程分支。我相信为此的 git bash 命令是:

git checkout -b mybranch origin/mybranch

我如何在 GitPython 中做同样的事情?

我可能会进行更改并将更改推送回 origin/mybranch,然后将更改拉回其他实验室机器。

0 投票
2 回答
5741 浏览

python - GitPython 相当于“git remote show origin”?

我正在尝试更新一个 Python 脚本,该脚本检查少数本地存储库的状态,从使用subprocess到使用GitPythonGitPython for中的等效命令是git remote show origin什么,或者检查本地存储库是否可快速转发过时(等)的更好方法是什么?

最后两行是我最关心的。通过迭代和比较(等)哈希值,看起来这可能通过GitPython实现。这似乎比上面的单个本地 git 命令要做更多的工作,并且需要更多的工作来判断哪一侧已经过时。我期待类似的东西。在GitPython中确定这一点的正确方法是什么?git.Repo.headsgit.Repo.remotes.origin.refs.master.commitgit.Repo.remotes.origin.status()