[英]How do I make my colleagues not despise SVN?
我的許多同事在1-5人的團隊中使用SVN,部分工作在特定項目上。 其中一半是沒有經驗的學生。 事實上,我們不是真正的軟件開發人員,具有一年的經驗。 他們中的大多數使用Eclipse和subclipse來讀取和寫入他們對SVN存儲庫的貢獻。
他們中的一些人有以下不同的問題:
如果他們按錯了按鈕,他們擔心SVN可能會殺死他們的工作(他們不稱之為工作分支)。
在將一些任意庫依賴項添加到其java項目之后,他們將eclipse .project文件提交到存儲庫。 其他同事從這些comitts得到編譯錯誤,並發現很難解決這些問題。
一般來說,他們說: 我想在沒有SVN的情況下工作,我不喜歡它。 這太復雜了。
有沒有像“SVN for kids”這樣的電子學習項目? 我怎樣才能讓它們像版本控制一樣?
根據我的經驗,為什么這么多人“害怕”或不喜歡版本控制的一個主要原因是因為他們不了解基本概念以及系統如何工作 。 不幸的是,對於許多有經驗的開發人員來說,這也是如此。 我知道多年來一直使用CVS和Subversion的人,但他們從不創建分支或標簽,因為他們不了解它們是如何工作的,因此將它們視為“復雜”或“不必要”。
我認為您的同事必須基本了解版本控制的目的,使用它的原因以及執行此操作所涉及的工作流程 。 就個人而言,我認為Subversion書的前兩章提供了對所涉及的概念和版本控制系統背后的理論的最佳解釋,因此我建議你的同事閱讀這些。
我不建議使用IDE集成來學習使用版本控制 。 集成和插件通常會隱藏用戶的系統“細節”,這可能非常令人困惑,特別是如果你不知道“引擎蓋”之類的東西。
我更喜歡像TortoiseSVN這樣的工具,你可以直接執行大多數操作,也可以手工操作,在幕后沒有任何“魔法”。 例如,一個非常常見的誤解是不了解工作副本與服務器上的存儲庫之間的差異。 我經常看到,切換到直接在文件系統上運行的工具將有助於解決這種情況,因為用戶被迫主動思考他在做什么,以及為什么。
與生活中的其他一切一樣,使用版本控制也是最好的個人經驗 - 嘗試和失敗,並再次嘗試。 這就是我建議為每個人創建沙箱主文件夾的原因 。 允許他們在系統中試驗各種功能,而不必擔心破壞項目中的任何內容或丟失數據。
首先,您需要采用“獨立於軟件”的方法來研究這個問題。 不要強迫他們閱讀Red Bean書籍,或者嘗試告訴他們所有漂亮的SVN命令。 相反,您應該首先嘗試使用版本控制來教授正確的工作流程。 簡而言之,這意味着:
請注意,我將排除初始簽出流程,因為您應該在那里幫助他們查看他們的初始視圖。 上述步驟只是SCM支持的開發人員每天應該做的事情(順便說一句,你也應該真正強調這一點,否則那些擔心合並沖突的人只會隨着時間的推移而變得更糟)。
SCM成功采用的關鍵是雙重的; 首先,您需要讓人們習慣使用軟件來處理正常的,非痛苦的事情(即更新/提交)。 如果你不這樣做,那么開發人員將傾向於避免使用SCM,直到你為此煩惱並詢問為什么他們在兩周內沒有提交任何代碼。 其次,你需要教會人們如何克服可能導致他們失去工作的常見痛苦場景。
SCM系統確實可能會破壞工作,並且通常在任何事件通過合並沖突提交到存儲庫之前發生。 你應該模擬合並沖突,讓他們解決它們,然后讓它們自己做同樣的事情。 你應該解釋一下:
境內有許多SCM更復雜的事情,而這只能更晚后基本是很好理解的解釋。 甚至不用提及合並或標記或類似的東西,直到他們有幾周的日常經驗。 否則,復雜性和額外的風險將使這個新工具對他們來說更加“無用”。
同樣,這里的關鍵是以軟件中立的方式強調每日SCM工作流程,並慢慢解釋特定SCM系統出現時的怪癖。 合並是唯一需要首先解釋的復雜因素,因為它可能是每天遇到的唯一痛苦的事情。 其他所有內容都應該在出現時加以解釋。
對於所需程序的簡單“備忘單”,一步一步給出,是最好的方法。 SVN確實有一些不明顯的陷阱。 我已經參與了使用它的新人,有時他們會從當前的版本中刪除整個代碼塊等等。當然,你總是可以回過頭來獲取以前的版本,但是SVN 是可怕的和危險的新人。 牢記這一點,並為所需的操作編寫非常簡單但明確的指令!
“我怎樣才能讓它們像版本控制一樣?”
刪除他們的工作副本,他們將很快掌握有用的版本控制軟件!
說真的,使用VCS與成熟的開發人員並駕齊驅。 如果你不知道為什么你想要Subversion,我不會相信他們是開發者。 他們可能有技能編程,但編程只是開發人員工作的一部分。
我確實相信,在你丟失代碼之前,你真的永遠不會欣賞VCS。
只有當兩個開發人員修改相同源文件中的同一行時才需要'合並'。 它在小團隊中並不經常發生,需要幾分鍾才能解決。 版本控制系統自動合並所有其他更改。
如果他們大多是學生,那么在“現實世界”中有一個賣點就是很多人非常重視版本控制。
如果他們害怕刪除某些內容,請演示刪除一些重要文件並演示恢復已刪除文件的能力。
或者他們可能喜歡不同類型的版本控制,例如git或mercurial。
給他們一個關於svn的簡短講話。 告訴他們好處是什么以及如何使用它。
我設法在大學的第一份工作中拿起SVN並沒有遇到任何麻煩,盡管我在使用tortoise SVN的文件系統級別使用它。 我不是那么聰明,所以如果我可以拿起它,任何人都可以。
與它們一起運行一些場景,了解為什么版本控制是好的。 更好的是,讓他們通過一些玩具項目,時間壓力使他們經常提交。 在某些情況下,只允許它們通過svn共享代碼,而在其他情況下只能通過共享目錄共享代碼。
之后他們會知道它是什么。
你真的不能讓任何人喜歡它。 但是如果你自己開始使用它並樹立了一個很好的例子,那么好處就會變得明顯。 您需要不斷更新服務器並確保服務器已備份。 這樣,當系統中存在一個瘋狂的錯誤時,您將擁有日志以顯示導致該錯誤的更改。 你知道你需要做什么。 不要讓別人的無知阻止你。
版本控制最大的問題是沖突解決。 如果您真的想玩安全,請嘗試以下工作流程:
Subversion 1.5新功能非常適合這種工作流程。
試試這個 。 我發現它是'SVN for dummies'搜索,它被描述為'傻瓜SVN,奶奶可以理解的指南':D
這是一個體面的SVN“cheatsheet”,描述了基本用法: http : //abbeyworkshop.com/howto/misc/svn01/
K讓你的朋友讀這個。 接下來,在幾個寵物項目中首先學習cli可以大大澄清這一點。 我第一次看到subclipse讓我討厭eclipse。 部分是因為我之前從未使用過顛覆。
合並是一個很好的功能,但一開始有點復雜。
我建議他們至少閱讀基本部分 http://svnbook.red-bean.com/en/1.5/index.html ,它寫得很精彩。它涵蓋了使用命令行工具,但無論你是什么界面,概念都是一樣的使用(即TortoiseSVN或Subclipse)
發送給:
給他們留下深刻印象的是,任何使用半個合適的源控制系統(即不是VSS)的人都會將他們詆毀為完全和徹底的傻瓜。
你需要首先在版本控制的概念上出售它們,以便他們了解svn的工作原理。
要嘗試的一些事情是
值得向學生們指出,源代碼控制經驗對他們的簡歷來說也是一個優勢。
關於提交.project文件的具體問題,您可以在屬性上設置svn:ignore屬性,也可以在每個用戶subversion配置文件中設置global-ignores值。
您可能希望為調用svn命令之前需要顯式確認的最危險命令(我主要考慮恢復)創建別名。
此外,如果他們使用Eclipse,他們可以設置他們的編輯器,以便它保留當前代碼的N個工作副本。 我已經從這個功能的幾個愚蠢的版本控制錯誤中拯救了自己。
他們總是可以嘗試“窮人的CVS”:讓他們在簽入/退出任何東西之前做一段他們的代碼,並將它們存儲在硬盤中的某個地方。
最后,他們會有一堆文件,如:
這將使他們明白他們的“工作”不會被“摧毀”以防他們做一些愚蠢的事情,並且會非常麻煩,迫使他們學習如何正確使用SVN(來吧,這並不難! )。
我個人發現這個窮人的方法遠遠優於Visual SourceSafe:在一個前雇主我被迫使用那個怪物......在第二次存儲庫完全崩潰后,他們感謝我:D
如果您正在使用Windows機器進行開發,請嘗試使用TortoiseSVN作為您的subversion客戶端。 界面真的很棒。 我會幫助他們擺脫版本控制恐懼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.