问题描述
在进行嵌入式编程的时候,首先在vscode上将已经写好的测试脚本shell提交到gitlab上,然后在测试的电脑上使用git clone获得测试例源码。使用scp/ftp等方式传输文件到运行了linux系统的开发板上,运行shell的测试脚本,依然出现了换行符的报错。第一时间想到的是bash换行符问题。
但是已经明确确认过vscode上向gitlab提交的源码使用的是LF的换行方式的情况下,依然有这个问题那么问题仅能出在git上。
答案是git上存在一个默认的设置选项autocrlf,pull拉取文件的时候会将文件的换行符自动切换为当前设备的换行符。这种方法一般而言是十分方便的,但是对于嵌入式开发来说带来了额外的问题。
本质上问题还是偷懒了,开发板一定会接win的电脑,需要xterm之类的串口,还需要通过网口和电脑测试。所以就没有连开发板和gitlab的服务器,结果出现了这种和平台相关的问题。
解决方法
- 嵌入式设备允许的情况下,在设备的linux CLI使用git clone获得测试源码
- 设置仓库中的autocrlf变量
设置全局(在本地创建和克隆的都受到影响)
git config --global core.autocrlf true设置当前仓库
git config core.autocrlf false