看板Soft_Job
: ※ 引述《dream1124 (全新開始)》之銘言:
: : → TonyQ:很想殺人。 01/24 11:58
: 原文推文串裡提到了幾個版本控制系統,似乎 TFS 最招人怨 XD
: 有沒有興趣談一談 TFS ? 不管是好處還是壞處,我都很有興趣
: 我先起頭 :)
: * TFS 2005 / 2008 的 branch/merge/rename 是惡夢
: 因為其內部設計的缺陷,效能一直是瓶頸,且 merge 的演算法極難維護
: 對使用者來說, merge conflict 常常多到難以處理
: 這在 TFS 2010 及之後的版本裡,從內部設計的重構,到 merge conflict 的
: auto resolution ,在效能與 usability 有大幅度的改善
: * git-tfs 有些兩頭不討好
: TFS 2013 後的版本直接支援使用 git 當版本控制系統
: Visual Studio 在 2012 後也開始提供 git client 支援,功能在慢慢增加中
: * TFS "Team Explorer" 的 GUI 感覺很頓
: 或許我是帶有偏見,偏好 CLI, 不喜歡 GUI;
: TFS 的 CLI: tf.exe 用起來感覺還不錯
: Team Explorer 提供的 branch visualization 功能倒是不錯用
: * TFS 版本控制的 "workspace mapping" 觀念上手不易
: 其實,DVCS 如 git 也有它難懂的地方
: 只能多用多練習了
我來聊聊我的。我們那時候的問題主要跟專案結構也有關係。
* 第一個想殺人的點是,TFS 預設點兩下編輯會自動當你 checkout & lock ,
但萬一你忘了這件事情別人想砍那個檔案或 rename 就會來找你抱怨...
弄得每次開檔讀檔做些小 test 都要緊張兮兮的。
* 這個跟專案的問題比較大, .Net MVC project 有個 csproj 檔,
會寫入所有該專案有關的 file list,
所以
每次專案內檔案新增、改名、刪除檔案都會改到 csproj 檔。
這根本就是版本控制的天敵......-_-
躲無可躲避無可避,當時每天都在 csproj 撞車,想起來還是心有餘悸。
偏偏(個人覺得) 他的衝突管理介面有夠難懂,比聰明又比不上 git 聰明,
後來我改用 git-tfs 主要就是降低 merge 負擔,效果顯著。
另外就是 tfs 開 branch 跟 svn 味道有點像,都是勞師動眾,
在 git-tfs 上至少可以做到開 branch 。
git-tfs 我當時碰到的問題還是 lock issue 佔大宗,
躲的了 merge 躲不了 lock 。
另一方面我當時用 git-tfs 時其實他還在接近 preview 的階段,
小 bug 不少,得自己上奇怪的參數躲雷。 XD
(約是 2012 年 7 月的事情了,我想現在應該好很多了。)
ps. 我當時的環境是 MVS 2012
--
Life's a struggle but beautiful.
--
◆ From: 118.168.130.204
※ 批踢踢實業坊(ptt.cc)※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1390542990.A.E01.html
推 leicheong:csproj那個我都是每次加一批新檔後都先checkin一次, 01/24 21:26
→ leicheong:之後再把那些檔案重新checkout來迴避的. 01/24 21:27
→ leicheong:就Entity Framework那堆POCO class重整時比較麻煩, 每次 01/24 21:27
→ leicheong:update from database時都要先問有沒有人在改或者有 01/24 21:28
→ leicheong:table/SP需要順道加進去, 加完之後編一次能過就checkin 01/24 21:29
→ leicheong:再叫全team所有人get latest... 01/24 21:30
推 Ageis:最恐怖的是有人改完程式忘了 unlock 然後隔天休假... 01/25 12:38