python 关于git下unix和windows换行符不同导致稍微改动一行代码git diff就是全部文件对比的解决方案

来源:互联网 发布:古龙的作品风格知乎 编辑:程序博客网 时间:2024/06/04 18:58

背景:

家里的电脑是用来打游戏的,配置也还可以,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-8import osroot = '/Users/ouyang/PycharmProjects/myApp/'all_cnt = real_cnt = 0for 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









阅读全文
1 0
原创粉丝点击