背景:
家里的电脑是用来打游戏的,配置也还可以,windows的,偶尔也会用来写写代码。
公司是mac。pycharm的默认配置:Pycharm》Settings》Editor》Code Style》Line separator是Classis Mac,也就是\r,真是尴尬。
导致每一次提交代码,就算是一行代码,git diff也是整个文件的增删。
思路:
谷歌到是换行问题:LR = \n, CRLR = \r\n, CR = \r,跨平台导致之。
其实好解决,就是统一成\n即可。
方案:
1、把pycharm的换行配置改成Unix and OS X(\n) ;
2、git 配置如下:
git config --global core.autocrlf input
这样子git commit的时候,如果我们是CRLF,会报错...如果是CR的话,依旧不会报错,真是可恶。git只能帮我们到这里了吗?
3、写个脚本帮我们把之前被影响的文件修改回来。
这个本来想找现有轮子的,结果无论是doc2unix还是什么别的,都无法解决这个CR换行符也就是\r的问题,CRLF和LF倒是转的挺溜的,无奈自己造轮子:
# coding=utf-8
import os
root = '/Users/ouyang/PycharmProjects/myApp/'
all_cnt = real_cnt = 0
for root, dirs, files in os.walk(root):
for file in files:
fullpath = os.path.join(root, file)
if file.split('.')[-1] == 'py':
print fullpath
tmplines = []
all_cnt += 1
with open(fullpath, 'r') as infile:
lines = infile.readlines()
if len(lines) == 1: # 如果是CR模式,则读出来的lines只有一行...
real_cnt += 1
print 'CR MODE!!!'
all = lines[0].replace('\r','\n')
with open(fullpath, 'w') as outfile:
outfile.write(all)
print all_cnt, real_cnt