如何在git-svn仓库配置autocrlf,避免向SVN提交时意外修改换行符?
Git-SVN 换行符安全配置方案
核心配置调整
- 保留
autocrlf=false,同时配置git-svn对接SVN的换行规则:- 执行
git config --global svn.eol-style native,让git-svn遵循SVN的native属性逻辑:拉取时转成本地系统换行符,提交时统一转为仓库存储的LF格式 - 针对无
svn:eol-style属性的文件,开启自动属性设置:
先执行git config --global svn.autoprops true,再在git配置文件中添加:
这样新文件或无属性的存量文件会自动应用native规则,统一换行符处理逻辑[svn-remote "svn"] autoprops = *.lua=svn:eol-style=native
- 执行
编辑器与EditorConfig适配
- 修改EditorConfig的
end_of_line配置为end_of_line = unset,让编辑器遵循git-svn和SVN的属性设置,而非强制修改为CRLF,避免本地编辑时打乱换行符 - 若需统一显示CRLF,可单独在编辑器中设置显示规则,但不要强制修改文件内容本身
存量混杂换行符修复
- 确保上述配置生效后,执行
git add --renormalize .让git重新识别所有文件的换行符 - 提交到本地git仓库后,再执行
git svn dcommit,此时git-svn会按照SVN属性正确转换换行符后提交
关键逻辑说明
- SVN的
svn:eol-style=native规则是:服务器端存储LF,客户端拉取时转为系统原生换行符(Windows为CRLF,Unix为LF) - Git的
autocrlf=false仅控制git自身的换行转换,git-svn有独立的svn.eol-style配置,必须开启该配置才能对接SVN的换行处理逻辑,否则git-svn会直接按文件原始换行提交,导致SVN端出现混杂换行
内容的提问来源于stack exchange,提问作者idbrii
相关产品推荐
相关产品推荐

