-
Notifications
You must be signed in to change notification settings - Fork 77
Git autocrlf设置
新机器配置windows下的chromium编译环境后,发现一个奇怪问题:
每次改动源文件保存后,都会整个文件被修改了,每一行自动在后面加上windows下的换行符cr+lf(显示为^M).
这个问题在以前没有碰到过。之后找出原因,git设置出问题,应该要设置git config --global core.autocrlf false
把autocrlf选项关闭。
如果该选项为true,则表示git会自动将文本文件(最经典是源码)的换行符转换当前操作系统的换行符(windows下为cr+lf,linux下为lf, mac下为cr)。例如:源码文件是linux下保存的,在windows下签出的时候,自动把lf转换层cr+lf,在签入的时候,则把cr+lf转换成lf回去。
如果需要在多操作系统下,一般是设置为true。windows下的msysgit默认是true,linux下则为false。
对于一般的源码文件是没有问题的,但是如果是bash文件,windows下的cygwin bash文件,这个就要注意了。设置为true后,签出的bash文件为多了\r\n, cygwin执行时会识别不出\r的。这个问题在编译Chromium就遇到了。在拉chromium代码时,要先把该选项设置为false在windows平台下,这样拉下来的所有源文件都不会被修改,以\n结尾。
题外话
vim检测当前换行符判断文件是unix或dos下文件。如果是unix文件,则以\n为换行符;如果是windows文件,则以\r\n为换行符。
在:w
保存后,如果是与当前系统相同的文件,则不会显示相应信息;如果不同,则会显示类似[unix]
,[dos]
的字样。
在vim中要把文件中^M
结尾的字符去掉(即\r\n转成\n),除了使用dos2unix
命令外,还可以在vim中使用:set fileformat=unix
然后再保存该文件。
LLVM/Clang
C/C++
- Get lower 32 bits from uint64
- How to unpack a std::tuple to a function with multiple arguments?
- {}-list Initialization
- Empty macro arguments
- 为什么能在函数中以by value方式返回unique_ptr?
- c++unsigned类型提升
- extern "C"
Linux
- ubuntu获取源码方法
- gcc/g++常用命令
- 浏览器导入安全证书
- ubuntu下宏包latex安装
- Bash Shell常用快捷键
- ubuntu把/tmp目录挂载到内存
- tar命令
- voyager12.04 apt-get install无法安装解决方法
- terminal shows git branch
- 编译GTK API源程序(附带pkg-config用法)
- ldconfig检查库是否存在
- Googletest Setup&Install
- Centos设置service开机自动启动
- CentOS create admin user
- 设置时区
- MySQL修改root密码
- MySQL常用命令
- Screen使用
- 环境变量
- Unity桌面环境的desktop文件
- zip和gzip文件区别
- Linux安全设置
Vim
- vim列编辑
- vim编辑二进制文件
- vim quickfix窗口
- Vim 批量操作
- Vim对多行重复操作
- mac下vim编译安装
- mac下vim taglist无效解决方法
- Vim 配置vim-airline
Tools
- gdb cgdb命令
- Source Insight添加.cc文件
- Source Insight快捷键
- GPT分区转MBR分区
- IRC工具Pidgin使用
- iTerm2 shortcuts
- MacOS shortcuts
- Compile/Run JUnitTest in Command Line
- Install Python2.7 on CentOS 6.4
- Install vmware tool on ubuntu server 12.04
- node-gyp Usage
- zsh中文乱码解决方法
- tmux快捷键
- 使用aria2突破百度云盘限速
- 配置 scheme编写环境
- How to list all available targets in ninja
Others
- CRLF换行符
- Git autocrlf设置
- Git reflog数据恢复命令
- how to migrate from SVN repo to Git repo
- Git submodule使用
- Git Pull强制更新
Chromium-Dev tips