【发布时间】:2022-08-24 22:43:54
【问题描述】:
我正在尝试从每个修订版中获取所有内容-我正在使用 gitpython lib 的本地存储库中文件的历史记录,这是代码:
import git,json
from pprint import pprint
repo = git.Repo()
path = \"my_file_path\"
revlist = (
(commit, (commit.tree / path).data_stream.read())
for commit in repo.iter_commits(paths=path)
)
for commit, filecontents in revlist:
filecontentsjs = json.loads(filecontents)
pprint(commit)
pprint(filecontentsjs[\"execution_status\"])
pprint(filecontentsjs[\"execution_end_time\"])
问题:我正在比较我们的 bitbucket 历史记录和我从这个脚本获得的历史记录,并且脚本很短,这意味着 bitbucket 历史记录有更多的文件修订,但是当我在本地克隆 repo 时,我得到了脚本的一半修订
我在这里错过了什么吗?限制或类似的东西?
-
你能提供一个Minimal Reproducible Example 吗?或者差异的一个例子?只是猜测:也许它与合并提交有关?
-
好吧,我们使用 bitbucket,所以我转到我的 repo 和一个文件并单击历史记录,所以我看到大约 7-8 次提交,不同作者针对特定文件的不同日期,然后我将该 repo 克隆到我的本地计算机并运行 \" git log -- file_path --pretty=online\" 或 \"git rev-list HEAD --online file_name\" 我只得到同一个文件的 4 次提交
-
对于命令行 Git,添加
--full-history。至于在这里为 GitPython 做什么,您必须查看文档以找到等效项。请注意,Git 中没有“文件历史记录”之类的东西:你得到的是过滤的提交历史,过滤规则决定了你得到的提交。添加--full-history只会更改过滤规则。 Bitbucket 使用自己的过滤,不易复制,因此您可能还需要添加-m。