TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

2008年6月29日 星期日

Why don't they like the "keyword expansion" in VCS

如CVS或是Subversion等版本控制系統都有一個"關鍵字替換"功能,就是如果你在source code裡加入了像是$date$或是$author$等字眼,又打開了關鍵字替換功能,那麽$date$會被展開為最後送交的時間戳記,$author$會被展開為送交這份文件的使用者名稱。其他還有更多關鍵字,端看使用的程式和版本。
聽起來很棒,不是嗎?你可以在文件裡自動加上版本管理資訊,每個人看了都一目了然。
不過很多人不是這麼想的,我們來看看嘴砲名人Linus Trovalds怎麼說
大致上提到的缺點有這些:
它會擾亂merge或是diff工具的行為,因為每次的送交,keyword expansion都會改變,這就導致了VCS每次都要紀錄這些改變,有時候conflict就會發生。想想看你要處理的conflict竟然不是發生在程式碼而是在註解裡的關鍵字吧,心情肯定不會太愉快。
對於二進位檔案[?]來說,keyword expansion是不該發生的。然後你就要小心哪些檔案不該使用keyword expansion。
在VCS裡,這些送交資訊可以很輕易地用log或是info之類的功能查到,而且更詳盡。而當你把source code拿出VCS時,把資訊寫在檔案裡或許是有道理的[?],但是這個工作應該是交給VCS之外的軟體去做,因為它是在拿掉VCS資訊時才做的事。
綜合以上理由,Torvalds老大才會說關鍵字替換是一種弱智的行為,還好他的名字叫Linus Torvalds。

沒有留言:

張貼留言