经常学习开源项目,也会尝试下载、编译,谁能想到竟因为git的一项默认配置翻车了。
目录
运行环境:
- Windows-7-Ultimate-x64、CentOS-7.9.2009-x64
- Nginx-1.22.1
- OpenSSL-3.0.5
1、编译nginx源码失败
在Linux环境下,编译C语言开发的软件,是件非常简单的事情。但今天因先在Windows系统下使用 git clone 仓库源码到本地,再将源码上传到 CenOS-7.9 并编译源码(给Nginx新增一个组件),结果“翻车了”!
编译日志摘要:
configuring additional modules
adding module in /opt/download/nginx-fancyindex-src
/opt/download/nginx-fancyindex-src/config: line 3: $'\r': command not found
/opt/download/nginx-fancyindex-src/config: line 21: syntax error: unexpected end of file
was configuredcyindex_module
原因分析:Linux Shell脚本中使用了Windows文档格式 回车换行符,导致编译失败。
2、git 常用配置项
Git支持根据参数设置,在提交源码到(本地/远程)仓库时,自动地把行结束符 CRLF(回车换行 \r\n) 转换成 LF(换行 \n),而在签出代码时把 LF(换行 \n) 转换成 CRLF(回车换行 \r\n)。而Windows系统默认的文档格式,以 CRLF(回车换行 \r\n) 作为一行的结束符。
2.1、通过git命令行设置
在Windows桌面,空白处 右击 选择菜单 Git Bash Here,根据需要输入以下代码:
# 在Windows平台,设置true,即 启用 LF(换行) 自动转换为 CRLF(回车换行)
git config --global core.autocrlf true
# 在Linux/Mac平台,设置false,即 禁用 LF(换行) 自动转换为 CRLF(回车换行)
git config --global core.autocrlf false
2.1、通过git图形界面设置
在gitconfig文件中,找到 [core] 段 将 autocrlf 项的默认值由 true 改为 false,并保存。下次在使用git clone的源码将保持原仓库中文档格式设置。
3、实践总结
- 了解不同平台的编码习惯;
- 了解常用工具的常用属性,并熟悉它们如何配置;
- 没事的时候,多看看软件官方帮助文档
附录: