我已经设置了两个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有更多的步骤,但运行在第二步失败;‘执行预做’,因为.exe是‘损坏’或‘超大’在签出后,在第一步。
这种情况只发生在一些大型文件中。所有较小的.源代码,没问题。在操作运行器的克隆操作运行器中运行git status时,“损坏”文件被视为已修改文件。
自托管运行程序都在运行x64窗口。有什么可能会出错的想法吗?我正在考虑用手动调用git来代替结帐操作。
发布于 2020-09-08 15:48:54
Git将文件作为文本处理,将每个Unix行的结束字节0A (在ASCII中的LF)替换为Windows换行字节0D0A (CR LF)。
因为所有字节在压缩良好的文件格式(如PNG )中都是一样的,这将使文件的大小平均增加1字节(平均每256字节)--这正是您所看到的。(反向转换将文件减少1/65536)。
顺便说一句,PNG的头被设计用来检测这种类型和类似类型的文件传输损坏,序列为0D0A1a0A。
为了防止损坏,尝试使用.gitattributes文件将文件标记为二进制文件。
https://stackoverflow.com/questions/63796341
复制相似问题