"This comparison is taking too long to generate." github 错误

"This comparison is taking too long to generate." error on github

我正在处理一个项目,该项目有大量 json 文件,这些文件从未在拉取请求中审查过,但偶尔需要更改。最近我们不得不对它们进行一些小改动,github 不允许我使用这些更改创建拉取请求。相反,它给了我:

This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.

我在本地检查了差异,实际的代码更改非常小(可能更改了 200 行),但是这些 json 文件中有数百万行更改。有什么方法可以告诉 Github 忽略它们吗?现在我无法进行公关,因此更改无法通过我们正常的公司审核流程。

不幸的是,我尝试将 .gitattributes 文件与 *.json linguist-generated=true 一起使用,但没有效果。

编辑:按照接受的答案中的建议,我就此案例联系了 github 支持。他们的建议是创建一个带有小提交的新分支,创建 PR,然后将我想要部署的实际分支合并到其中。这将更新 PR,虽然 diff 仍然不会显示,但它会让我创建一个 PR。

当您比较 GitHub 上的两个分支时,GitHub 必须使用 Git 计算这些更改的差异,然后为您呈现。在您的情况下,您有数百万行更改,并且 Git 在这种情况下表现不佳,因为用于计算差异的算法是 O((N + M)D)。因此,如果您有许多与行数成正比的差异,则该算法本质上是 O(N²)。 N 较大会使情况变得更糟。

GitHub 对请求可以花费的时间有限制,因此您的大量更改不会在界面中呈现。即使差异不会呈现并且仍然打开拉取请求,也可以选择您想要的分支。如果没有,您可能需要求助于使用 API,它不会为渲染生成差异,因此可能会更好一些。

我鼓励您让 GitHub 支持知道这一点,如果您无法通过 UI 找到解决方法,因为他们可以通知某人确保界面可用于创建 PR,即使 diff 无法呈现。你可能不是第一个遇到这种情况的人。

您可能还想将这些文件存储在 Git 之外的某种工件服务器上,并根据哈希将它们拉到您的存储库中,在这种情况下,您就不会遇到这种病态情况。