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

  源起

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

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

  經(jīng)過(guò)

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

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

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

  背景

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

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

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

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

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