从GitHub下载.zip将从文本文件中删除换行符

问题描述 投票:9回答:4

我在GitHub上有一个小项目。该项目包括一个Readme.txt。在存储库中一切正常,换行符仍然存在,但是当用户从存储库下载.zip文件时,换行符就会消失。

示例:

这是一行。这是另一行。This is an indented line.

此行远在下面。

成为:

这是一行。这是另一行。这是预期的行。线远在下面。

此行为使Readme.txt很难阅读,尤其是在缩进很多的情况下。

是否有解决此问题的方法?除了更改文件类型之外,最好是其他方式。

为澄清起见,我的目标是在不使用Git的情况下,通过GitHub页面上的“下载ZIP”按钮进行此操作。

git github
4个回答
12
投票

作为nulltoken explained,这是由于GitHub在默认为linux行结尾的linux机器上运行git archive而导致的。您可以通过显式设置仓库中文件的行尾来更改此设置。为此,请在仓库的根目录中创建一个具有以下内容的.gitattributes文件并提交。

*.txt eol=crlf

所有GitHub创建的包含该文件的修订的zip文件现在将在所有CRLF文件中以.txt行结尾。您可以使用*而不是*.txt将其扩展到所有文件,但我建议您这样做,因为这会使Linux用户感到悲伤。


3
投票
GitHub的

内部,“ Download Zip”功能利用git archive

[git archive实际上执行针对提交的签出,将内容传输到tar或zip存档器。

在结帐过程中,行尾的处理方式最终取决于在其上运行命令的平台。

由于GitHub服务器是基于Linux的,因此所选文本文件的结尾行将是Linux本机文件(即LF)。

因此(当前)没有任何方法可以干扰此操作,并且zip / tar下载中的文本文件将被LF终止。

但是您仍然可以

  • 使用Unix2Dos之类的工具批量转换文本文件
  • 发送邮件到[email protected]并请求更改其UI,以便有可能选择预期的行结尾

0
投票

如果无法下载zip,则标准的git方法是使用git archive

git archive --format zip HEAD ..\repo.zip

这会在repo.zip文件的工作树中创建最新跟踪的已提交文件的压缩版本。您必须在本地仓库中执行它。


0
投票

比总是将LF转换为CRLF的eol=crlf更好的选择是使用-text,它从不进行任何转换。

*.patch -text

((我尚未对此进行测试。)

© www.soinside.com 2019 - 2024. All rights reserved.