问题标签 [pygit2]
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.
python - 如何使用 pygit2 推送到远程?
我想克隆一个存储库,更改一个文件并将这些更改的文件推回原始分支。我可以克隆回购
但是我现在需要做什么才能将更改推送到遥控器?我只想提交一个特定文件的更改,即使更改了更多文件。
希望可以有人帮帮我。TIA
git - 使用 pygit2 的 discover_repository 在一个目录中定位多个存储库
我有一个项目,我需要访问裸 git 存储库的(本地)目录,以便从它们的历史记录中获取特定项目。我需要一个函数来遍历目录并执行以下操作:
但我需要能够for
循环执行此操作。
每个存储库都用于一个不同的项目,通过在我的代码中其他地方使用一些嵌套循环,可以将其名称定位并存储在一个列表中。
repo
1)如果我只在我的代码中根据它们的列表索引引用项目名称(或者我应该给每个 repo 一个名称,比如repo_n
其中 n 是一个整数,那么使用项目名称代替上面是否有意义?在发现 repos 的循环的每次迭代中递增)?
2)是否有可能在一个for
循环中发现这些存储库,以便我可以一次获得它们,或者我需要一个一个地完成它们?
3)如果可以在循环中执行此操作,我该如何创建一个包含项目名称和新发现的存储库对象的元组(或者可能是一个字典)?
python - 如何在pygit2上禁用ssl验证
我正在使用 pygit2 以编程方式从拥有自签名证书的内部服务器克隆存储库。pygit2 在证书上引发错误,如何关闭验证?
libgit2 - 在 Debian Docker 上安装 libgit2 和 pygit2
我一直在尝试使用 Debian:Jessie docker 文件安装 pygit2 和 libgit2。我可以用 ubuntu 编译几乎相同的包,但不能用 debian。
下面是我使用的 Dockerfile 和输出错误示例
但是在编译 libgit2 库时,出现以下错误
如果我错过了依赖项,有人可以告诉我吗?
谢谢
更新
我尝试将 libgit2 更新到版本 0.24.1 但仍然收到以下错误
git - 当标签指向其他分支上的提交时,列出自上次发布以来的所有提交
我需要列出master
自上次发布以来对分支所做的所有提交。我必须使用pygit2
. 但这里的情况有点不同。
发布是在master
分支上使用 a tag
on a commit to other
branch 进行的。天真的方法是找到sha
最后一个并将历史从直到这个tagged commit
向下移动。但在我的情况下,这不是对分支进行的,而是对分支进行的。有趣的是,以下在分支上运行时给出了正确的输出:HEAD
sha
tagged commit
master
other
master
这里,指向分支sometag
上的提交。所以,我想知道如果我有一个分支other
上所有提交的列表,我该如何以编程方式实现它。master
timestamp
我想到的一种解决方案是找到tagged commit
并过滤我的提交列表。这是怎么git log
做的,有什么想法吗?
python - Pygit2:为什么合并会使分支处于不干净状态?
我目前正在运行 Pygit 0.24.1(以及 libgit 0.24.1),在我有两个分支(比如prod
和dev
)的存储库上工作。
每个更改首先提交到dev
分支并推送到远程存储库。为此,我有这段代码:
这工作得很好,我可以看到本地提交和远程提交,并且本地仓库保持干净:
没有什么可提交的,工作目录干净
接下来,我签出到prod
分支,我想将 HEAD 提交合并到dev
. 为此,我使用了另一段代码(假设我总是开始签出到dev
分支):
我实际上可以看到分支在本地和远程都被合并,但是在这段代码运行之后,提交的文件总是在 branch 上保持修改状态dev
。
在分支开发
要提交的更改:(使用“git reset HEAD ...”取消暂存)
修改:any_file
不过,我完全确定没有人在修改该文件。实际上, agit diff
什么也没显示。此问题仅发生在已提交的文件(即,之前至少提交过一次的文件)中。当文件是新的时,这可以完美地工作并使文件处于干净状态。
我确定我遗漏了一些细节,但我无法找出它是什么。为什么文件保留为已修改?
编辑:澄清一下,我的目标是进行 FF(快进)合并。我知道 Pygit2 文档中有一些关于进行非 FF 合并的文档,但我更喜欢第一种方法,因为它通过分支保持提交哈希。
编辑 2:@Leon 发表评论后,我仔细检查,确实git diff
没有显示输出,同时git diff --cached
显示文件在提交之前的内容。这很奇怪,因为我可以看到在本地和远程存储库上成功提交了更改,但看起来之后文件再次更改为以前的内容......
一个例子:
- 提交内容为“12345”的文件+推送后,我将该字符串替换为“54321”
- 我运行上面的代码
/li>git log
显示正确提交的文件,在远程仓库中我看到内容为“54321”的文件,而在本地git diff --cached
显示:
python - 如何使用 pygit2 执行变基?
这个问题涉及如何与 执行合并pygit2
,但据我所知,这将导致新的提交。有没有办法执行变基,这不会导致新的提交,并且只会快进分支引用以对应于给定远程的最新版本?
python - 从 repo 中的任何位置获取 PyGit2 中当前 repo 的路径
我正在使用 Pygit2 在我正在处理的存储库中运行某些操作。
如果我的代码文件不在 repo 的根目录下,如何从 repo 中的任何位置获取 repo 的路径?
如果从 root 调用该函数,我可以执行以下操作,但是如果我从存储库代码中的任何位置运行它怎么办?
python - 在 RHEL7.2 上正确导入 python-pygit2(用于 SaltStack gitfs)
我正在尝试使用 pygit2 方法为 SaltStack 设置 gitfs。我已经在我的机器上安装了 pygit2 和 libgit2:
我还安装了 python-devel 包。这就是 Python 2.7 的全部内容。
每当我尝试导入 pygit2 包以测试它是否安装正确时,我都会收到一堆 cffi 警告和错误。以这个堆栈跟踪结束:
这是我尝试过的事情的清单:
- 卸载/重新安装(使用 yum)
- 通过二进制文件安装 libgit2,然后尝试使用 pip 安装 pygit2(由于 GCC 编译器错误也失败)。
- 验证我安装了 GCC 编译器
- 尝试将/usr/lib64/python2.7/site-packages 中的cffi文件移动到 [..]pygit2/ pycache /
- 对其他问题进行了一些搜索 - 我找到了这个链接查看 JDavid 的评论,大约有 2 个解决方案
任何帮助表示赞赏