如何解决GitHub操作:检出操作会下载“损坏/过大”的文件
我建立了两个github工作流,它们由两个不同的自托管运行程序运行。对于两个跑步者,运行checkout @ v2操作都会导致某些“大”下载文件变得过大。例如。使用该操作下载后,回购中的512 kb png图像将变为514 kb,或者1331 kb .exe文件将变为1355 kb。当运行.exe时,powershell会使用“ applicationfailedexception”取消程序。
以下是其中一个工作流程的摘录:
jobs:
benchmark:
runs-on: [self-hosted,Windows,X64]
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Execute Premake
run: .\premake5.exe vs2019
除了这些步骤以外,还有更多步骤,但是第二步运行失败; “执行Premake”,因为在第一步签出后.exe已“损坏”或“过大”。
这仅在某些大文件中发生。所有较小的,即。源代码,很好。在动作运行器的克隆动作运行器中运行git status
时,“损坏的”文件被视为已修改。
自托管运行程序都运行x64 Windows。有什么想法可能有问题吗?我正在考虑用手动调用git代替checkout操作。
解决方法
Git将文件视为文本,用Windows换行字节0D 0A(CR LF)替换每个以Unix结尾的字节0A(ASCII中的LF)。
由于所有字节在压缩后的文件格式(例如PNG)中均具有相同的可能性,因此平均每256个文件将使文件大小增加1个字节-这正是您所看到的。 (反向转换会在65536中将文件减少1。)
顺便说一句,PNG的标头旨在检测这种和类似类型的文件传输损坏,序列为0D 0A 1A 0A。
为防止损坏,请尝试使用.gitattributes文件将文件标记为二进制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。