我在GitHub上有一个小项目。该项目包括一个Readme.txt。在存储库中一切正常,换行符仍然存在,但是当用户从存储库下载.zip文件时,换行符就会消失。
示例:
这是一行。这是另一行。
This is an indented line.
此行远在下面。
成为:
这是一行。这是另一行。这是预期的行。线远在下面。
此行为使Readme.txt很难阅读,尤其是在缩进很多的情况下。
是否有解决此问题的方法?除了更改文件类型之外,最好是其他方式。
为澄清起见,我的目标是在不使用Git的情况下,通过GitHub页面上的“下载ZIP”按钮进行此操作。
作为nulltoken explained,这是由于GitHub在默认为linux行结尾的linux机器上运行git archive
而导致的。您可以通过显式设置仓库中文件的行尾来更改此设置。为此,请在仓库的根目录中创建一个具有以下内容的.gitattributes
文件并提交。
*.txt eol=crlf
所有GitHub创建的包含该文件的修订的zip文件现在将在所有CRLF
文件中以.txt
行结尾。您可以使用*
而不是*.txt
将其扩展到所有文件,但我建议您这样做,因为这会使Linux用户感到悲伤。
内部,“ Download Zip”功能利用git archive
。
[git archive
实际上执行针对提交的签出,将内容传输到tar或zip存档器。
在结帐过程中,行尾的处理方式最终取决于在其上运行命令的平台。
由于GitHub服务器是基于Linux的,因此所选文本文件的结尾行将是Linux本机文件(即LF)。
因此(当前)没有任何方法可以干扰此操作,并且zip / tar下载中的文本文件将被LF终止。
但是您仍然可以
如果无法下载zip,则标准的git方法是使用git archive
git archive --format zip HEAD ..\repo.zip
这会在repo.zip
文件的工作树中创建最新跟踪的已提交文件的压缩版本。您必须在本地仓库中执行它。
比总是将LF转换为CRLF的eol=crlf
更好的选择是使用-text
,它从不进行任何转换。
*.patch -text
((我尚未对此进行测试。)