因為項目需要,同時開發了Linux/Windows版本的程序,后面在實際測試過程中,發現兩個版本之間的體現出來的行為有些不一致,大致情況如下:
1、Linux下代碼能編譯通過,Windows下編譯通過
2、Linux下程序功能正常,Linux程序功能不正確
#配置庫使用svn,兩個系統使用同一份代碼
?
后面經過逐步定位,發現問題出現在中文注釋上,再進一步發現時跨平臺下end-of-line解釋不同造成
實際上,在不同系統下,行尾符的解釋不同:
如:Unix每行結尾為’\n‘,Windows系統每行結尾是“\r\n”,?Mac系統每行結尾是'\r'
?
由上可知,Linux下的eol在Windows下會解釋為回車+換行,而在Linux下只會是換行
為了解決此問題,svn 專門提供了一個 svn:eol-style 這個 property。只要將 svn:eol-style 設置為 native,每次 checkout,svn 會自動將 eol 轉換為當前系統的默認格式
具體命令為:svn propset svn:eol-style native file/dir [-R 遞歸]
?
另外Linux下也提供了兩個命令來解決這個問題:dos2unix + unix2dos,使用都很簡單,具體可參考man描述
?