Git repository 中,檔案名稱大小寫的重新命名

Git-Logo-1788C

先前以為 Git 對於檔名的處理是不區分大小寫的(case-insensitive),後來發現其實 Git 是會區分檔名大小寫的,只是作業系統和檔案系統就不一定是這樣了

例如 FAT 檔案系統本身是不區分大小寫的,Mac OS 使用的 HFS+ (或叫做 Mac OS Extended) 雖然支援區分檔名大小寫,但 Mac OS 預設沒有啟用區分大小寫,要重新格式化磁碟為有區分大小寫的檔案系統才行,至於 NTFS 雖然有支援區分大小寫,但 Windows 預設的行為也是不區分大小寫的,所以結論幾乎可以說是在 Mac OS 和 Windows 系統上,檔案系統預設都是不區分大小寫的果然還是用 Linux 或 FreeBSD 比較簡單

如果只是把檔名從 program.cs 改為 Program.cs,用 git status 指令看狀態時會看不到任何改變:

~/test $ git status
On branch master
nothing to commit, working tree clean

~/test $ mv program.cs Program.cs

~/test $ git status
On branch master
nothing to commit, working tree clean

如果自己動手 git mv 呢?有可能會遇到 destination exists 這個問題:

~/test $ git mv program.cs Program.cs
fatal: destination exists, source=program.cs, destination=Program.cs

在網路上有看到一種作法,先將檔案改為另外一個沒有完全相同字母的檔名,再改為目標檔名,藉此替換大小寫:

~/test $ git mv program.cs program.temp && git mv program.temp Program.cs

不過這也太累了,後來發現加上 --force (-f) 的參數就可以搞定這問題了:

~/test $ git mv -f program.cs Program.cs

這時候再用 git status 看狀態就會發現 git 已經可以成功識別重新命名了:

~/test $ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	renamed:    program.cs -> Program.cs

關於 git mv--force 參數說明是這樣的:

Force renaming or moving of a file even if the target exists

看來只能暫時這樣處理了,用到的機會目前看起來也不是很多就是了~

註:在新版(明確是哪個版本就沒去追了)的 git 直接用 git mv 操作的看起來已經沒問題了,不需要加 -f 也不需要兩段式操作了,讚!

瀏覽器綜合測試 on Windows

Opera 也開始改用 Webkit 了…有點可惜 這樣的 Opera 還是 Opera 嗎?

讓我們繼續看下去…

剛剛想說裝了 Opera Nex t(開始改用Webkit 的 Opera) 來測一下大家支援 HTML5 的狀況

平台是Windows 7 Home Premium 64-bit SP1 以下按照分數高低排序

硬體的話就不提了 反正只是比較性而已

網址:
http://html5test.com

Google Chrome 27.0.1453.94 m
463 AND 13 BONUS POINTS
Opera Next 15.0.1147.18
433 AND 9 BONUS POINTS
Mozilla Firefox 21.0
399 AND 14 BONUS POINTS
Microsoft Internet Explorer 10.0.9200.16576 更新版本10.0.5
320 AND  6 BONUS POINTS

以上是在Windows平台上的最新穩定版本測試結果

其他小品牌或開發版、測試版、已經停止開發的就不一一測試了

還是希望HTML5盡早制定完成 也希望各家實作盡量一致並完整支援

這樣在開發web前端的時候可以輕鬆一點

後來想說順便測一下效能好了…

Browsermark 2.0(綜合測試):
http://browsermark.rightware.com

Google Chrome 27.0.1453.94 m
6271
Opera Next 15.0.1147.18
5987
Mozilla Firefox 21.0 
4810
Microsoft Internet Explorer 10.0.9200.16576 更新版本10.0.5 
4237

smashcat(測canvas):
http://www.smashcat.org/av/canvas_test/

Microsoft Internet Explorer 10.0.9200.16576 更新版本10.0.5 
305
Mozilla Firefox 21.0 
250
Opera Next 15.0.1147.18
170
Google Chrome 27.0.1453.94 m
59

Peacekeeper(測HTML5):
http://peacekeeper.futuremark.com/

Microsoft Internet Explorer 10.0.9200.16576 更新版本10.0.5
3277
Mozilla Firefox 21.0
3024
Google Chrome 27.0.1453.94 m
2557
Opera Next 15.0.1147.18(應該是因為webkit的關係被誤認為是Chrome)
2221

Kraken JavaScript Benchmark v1.1(顧名思義是測javascript):
http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html

Opera Next 15.0.1147.181352.1ms
Google Chrome 27.0.1453.94 m1361.5ms
Mozilla Firefox 21.01647.9msMicrosoft Internet Explorer 10.0.9200.16576 更新版本10.0.54100.7ms

octane-benchmark (測javascript):
http://octane-benchmark.googlecode.com/svn/latest/index.html

Opera Next 15.0.1147.18
20493
Google Chrome 27.0.1453.94 m
17034
Mozilla Firefox 21.0
15104
Microsoft Internet Explorer 10.0.9200.16576 更新版本10.0.5
6587

sunspider(測javascript):
http://www.webkit.org/perf/sunspider-1.0/sunspider-1.0/driver.html

Opera Next 15.0.1147.18
143.3ms
Mozilla Firefox 21.0
148.0ms
Google Chrome 27.0.1453.94 m
1301.3ms
Microsoft Internet Explorer 10.0.9200.16576 更新版本10.0.5
顯示不出結果…

小發現是 不管在哪個測試 在複製貼上結果到編輯器的時候

Chrome和Opera會很完整的複製樣式 後兩名沒有 這大概是HTML5的關係~

另外這個微軟測試很明顯IE效能就比別人高超多…
http://ie.microsoft.com/testdrive/

我只選其中一項來測
http://ie.microsoft.com/testdrive/Performance/Minesweeper/

Microsoft Internet Explorer 10.0.9200.16576 更新版本10.0.5
1.0s
Mozilla Firefox 21.0
5.4s
Opera Next 15.0.1147.18
6.2s
Google Chrome 27.0.1453.94 m
6.3s

測試顯示圖形為預設的IE10,分數為花費秒數,越低越好,排名剛好倒過來

該不會是衝著Google或Webkit而來的吧XDDD

另外有一個WebVizBench(測HTML5)的網站:
http://webvizbench.com/

不過好像分數會受解析度影響…所以就中途作罷 懶得去細部調整讓個瀏覽器顯示範圍解析度完全一致…因為太麻煩了! 這點有點可惜

原則上上面的結果有加單位的數字越大是效能越差的意思,先後順序代表分數優劣

看起來是各有千秋…滿有趣的! 供各位參考~