您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 >
GitHub 第一坑:換行符自動轉(zhuǎn)換
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/9/23 9:30:28 ] 推薦標(biāo)簽:

  源起

  一直想在 GitHub 上發(fā)布項目、參與項目,但 Git 這貨比較難學(xué)啊。買了一本《Git 權(quán)威指南》,翻了幾頁,媽呀,那叫一個復(fù)雜,又是 Cygwin 又是命令行的,嚇得我不敢學(xué)了。

  終于某天發(fā)現(xiàn) GitHub 還有一個 Windows 客戶端,試了一下還挺好用。不需要掌握太多的 Git 原理和命令,也可以在 GitHub 上麻溜建項目了,甚是歡喜。可是好景不長,第一次參與開源項目出洋相了。

  經(jīng)過

  小心翼翼地 Fork 了樸靈大大 (@JacksonTian) 的 EventProxy 項目,本地改好提交,同步到服務(wù)器,懷著激動的心情發(fā)出 Pull Request……這時發(fā)現(xiàn)問題了。我發(fā)現(xiàn) diff 圖表顯示的更新并不僅是我修改的那幾行,而是整個文件都顯示為已修改。(下圖為示意圖)

  這看起來很奇怪啊,于是趕緊撤回 Pull Request,自己悶頭找原因。

  初步定位是文件的換行符問題,因為我發(fā)現(xiàn)本地的文件是 Windows 換行符,但很顯然大家現(xiàn)在做項目都是用 UNIX 換行符啊。這是一大疑點,于是在反復(fù)對比 Web 端和本地的各個文件、各個版本之后,基本定位到了問題所在。

  背景

  在各操作系統(tǒng)下,文本文件所使用的換行符是不一樣的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是 0x0D(CR),后來的 OS X 在更換內(nèi)核后與 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作為換行符。(不知道 Bill Gates 是怎么想的,雙向兼容?)

  這種不統(tǒng)一確實對跨平臺的文件交換帶來麻煩。雖然靠譜的文本編輯器和 IDE 都支持這幾種換行符,但文件在保存時總要有一個固定的標(biāo)準(zhǔn)啊,比如跨平臺協(xié)作的項目源碼,到底保存為哪種風(fēng)格的換行符呢?

  Git 作為一個源碼版本控制系統(tǒng),以一種(我看起來)有點越俎代庖、自作聰明的態(tài)度,對這個問題提供了一個“解決方案”。

  Git 由大名鼎鼎的 Linus 開發(fā),初只可運行于 *nix 系統(tǒng),因此推薦只將 UNIX 風(fēng)格的換行符保存入庫。但它也考慮到跨平臺協(xié)作的場景,并且提供了一個“換行符自動轉(zhuǎn)換”功能。

上一頁12345下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd