解決跨平臺合作開發中,win換行符問題

(一)前言

其實大情況下,win除了開機慢,軟件打開慢,而且卡頓,安裝包時候可能會出現一些問題外,也沒那麼多坑,

(二)頁面性能分析網址
當我們做完一個頁面,肯定要分析,加載渲染速度等一系列問題,那麼我們會怎麼來處理這些問題,谷歌提供一個在線網站,可以幫你分析一部分問題,鏈接地址如下

https://developers.google.com/speed/pagespeed/insights

(三)踩坑換行符

如果我們項目中使用了.editorconfig來統一平臺文件格式,那麼在win時候,你會發現一個很有趣的現象,當我們使用git add . 通常會發生如下錯誤,

$ git add .
fatal: CRLF would be replaced by LF ...

當然,這問題是很久發生了,目前主流系統如下

UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是 0x0D(CR),後來的 OS X 在更換內核後與 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF) 作爲換行符。

最大的問題是,在不同平臺上,換行符發生改變時,Git 會認爲整個文件被修改,這就造成我們沒法 diff,不能正確反映本次的修改。

還好 Git 在設計時就考慮了這一點,其提供了一個 autocrlf 的配置項,用於在提交和檢出時自動轉換換行符,該配置有三個可選項:

# 提交時轉換爲LF,檢出時轉換爲CRLF
git config --global core.autocrlf true

# 提交時轉換爲LF,檢出時不轉換
git config --global core.autocrlf input

# 提交檢出均不轉換
git config --global core.autocrlf false

如果把 autocrlf 設置爲 false 時,那另一個配置項 safecrlf 最好設置爲 ture。該選項用於檢查文件是否包含混合換行符,其有三個可選項:

# 拒絕提交包含混合換行符的文件
git config --global core.safecrlf true

# 允許提交包含混合換行符的文件
git config --global core.safecrlf false

# 提交包含混合換行符的文件時給出警告
git config --global core.safecrlf warn

如果涉及到在多個系統平臺上工作,推薦將 git 做如下配置:

$ git config --global core.autocrlf input
$ git config --global core.safecrlf true

但是實際項目,你會發現編輯器ide也可能幫你在切換分支時候,自動裝換。通過設置 gitattributes文件來實現這個功能,

https://github.com/alexkaratarakis/gitattributes

首先,我們在根文件下新建.gitattributes文件,然後點開上面web的鏈接地址,
在.gitattributes內部添加如下內容

## GITATTRIBUTES FOR WEB PROJECTS
#
# These settings are for any web project.
#
# Details per file setting:
#   text    These files should be normalized (i.e. convert CRLF to LF).
#   binary  These files are binary and should be left untouched.
#
# Note that binary is a macro for -text -diff.
######################################################################

# Auto detect
##   Handle line endings automatically for files detected as
##   text and leave all files detected as binary untouched.
##   This will handle all files NOT defined below.
*                 text=auto

# Source code
*.bash            text eol=lf
*.bat             text eol=crlf
*.cmd             text eol=crlf
*.coffee          text
*.css             text
*.htm             text diff=html
*.html            text diff=html
*.inc             text
*.ini             text
# 單獨處理來js文件
*.js              text eol=lf
// ...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章