2024-04-29 09:43:15 发布
网友
我正在尝试使用pygit2在git裸存储库中执行类似于git log filename的操作。文档仅说明如何执行git log操作:
git log filename
git log
from pygit2 import GIT_SORT_TIME for commit in repo.walk(oid, GIT_SORT_TIME): print(commit.hex)
你知道吗?在
谢谢
编辑:
我现在有一些类似的东西,或多或少准确地说:
另一种解决方案是从给定提交延迟生成文件的修订。由于它是递归的,如果历史记录太大,它可能会中断。在
def revisions(commit, file, last=None): try: entry = commit.tree[file] except KeyError: return if entry != last: yield entry last = entry for parent in commit.parents: for rev in revisions(parent, file, last): yield rev
我建议您只使用git的命令行界面,它可以提供格式良好的输出,使用Python可以很容易地解析这些输出。例如,要获取给定文件的作者名、日志消息和提交哈希:
import subprocess subprocess.check_output(['git','log',' pretty="%H,%cn%n %B "','some_git_file.py'])
有关可以传递给pretty的格式说明符的完整列表,请参阅git log的文档:https://www.kernel.org/pub/software/scm/git/docs/git-log.html
另一种解决方案是从给定提交延迟生成文件的修订。由于它是递归的,如果历史记录太大,它可能会中断。在
我建议您只使用git的命令行界面,它可以提供格式良好的输出,使用Python可以很容易地解析这些输出。例如,要获取给定文件的作者名、日志消息和提交哈希:
有关可以传递给pretty的格式说明符的完整列表,请参阅git log的文档:https://www.kernel.org/pub/software/scm/git/docs/git-log.html
相关问题 更多 >
编程相关推荐