簡體   English   中英

如何讓我的同事不要鄙視SVN?

[英]How do I make my colleagues not despise SVN?

我的許多同事在1-5人的團隊中使用SVN,部分工作在特定項目上。 其中一半是沒有經驗的學生。 事實上,我們不是真正的軟件開發人員,具有一年的經驗。 他們中的大多數使用Eclipse和subclipse來讀取和寫入他們對SVN存儲庫的貢獻。

他們中的一些人有以下不同的問題:

  • 簽出(與更新和合並混淆)
  • 提交(與更新混淆)
  • 更新(與提交和簽出混淆)
  • 合並(是最難的。什么是合並?我必須將我的代碼合並到SVN中嗎?)

如果他們按錯了按鈕,他們擔心SVN可能會殺死他們的工作(他們不稱之為工作分支)。

在將一些任意庫依賴項添加到其java項目之后,他們將eclipse .project文件提交到存儲庫。 其他同事從這些comitts得到編譯錯誤,並發現很難解決這些問題。

一般來說,他們說: 我想在沒有SVN的情況下工作,我不喜歡它。 這太復雜了。

有沒有像“SVN for kids”這樣的電子學習項目? 我怎樣才能讓它們像版本控制一樣?

根據我的經驗,為什么這么多人“害怕”或不喜歡版本控制的一個主要原因是因為他們不了解基本概念以及系統如何工作 不幸的是,對於許多有經驗的開發人員來說,這也是如此。 我知道多年來一直使用CVS和Subversion的人,但他們從不創建分支或標簽,因為他們不了解它們是如何工作的,因此將它們視為“復雜”或“不必要”。

我認為您的同事必須基本了解版本控制的目的,使用它的原因以及執行此操作所涉及的工作流程 就個人而言,我認為Subversion書的前兩章提供了對所涉及的概念和版本控制系統背后的理論的最佳解釋,因此我建議你的同事閱讀這些。

建議使用IDE集成來學習使用版本控制 集成和插件通常會隱藏用戶的系統“細節”,這可能非常令人困惑,特別是如果你不知道“引擎蓋”之類的東西。

我更喜歡像TortoiseSVN這樣的工具,你可以直接執行大多數操作,也可以手工操作,在幕后沒有任何“魔法”。 例如,一個非常常見的誤解是不了解工作副本與服務器上的存儲庫之間的差異。 我經常看到,切換到直接在文件系統上運行的工具將有助於解決這種情況,因為用戶被迫主動思考他在做什么,以及為什么。

與生活中的其他一切一樣,使用版本控制也是最好的個人經驗 - 嘗試和失敗,並再次嘗試。 這就是我建議為每個人創建沙箱主文件夾的原因 允許他們在系統中試驗各種功能,而不必擔心破壞項目中的任何內容或丟失數據。

首先,您需要采用“獨立於軟件”的方法來研究這個問題。 不要強迫他們閱讀Red Bean書籍,或者嘗試告訴他們所有漂亮的SVN命令。 相反,您應該首先嘗試使用版本控制來教授正確的工作流程。 簡而言之,這意味着:

  1. 更新您的視圖
  2. 做一些改變
  3. 測試你的代碼
  4. 再次更新
  5. 如有必要,解決合並沖突
  6. 承諾

請注意,我將排除初始簽出流程,因為您應該在那里幫助他們查看他們的初始視圖。 上述步驟只是SCM支持的開發人員每天應該做的事情(順便說一句,你也應該真正強調這一點,否則那些擔心合並沖突的人只會隨着時間的推移而變得更糟)。

SCM成功采用的關鍵是雙重的; 首先,您需要讓人們習慣使用軟件來處理正常的,非痛苦的事情(即更新/提交)。 如果你不這樣做,那么開發人員將傾向於避免使用SCM,直到你為此煩惱並詢問為什么他們在兩周內沒有提交任何代碼。 其次,你需要教會人們如何克服可能導致他們失去工作的常見痛苦場景。

SCM系統確實可能會破壞工作,並且通常任何事件通過合並沖突提交到存儲庫之前發生。 你應該模擬合並沖突,讓他們解決它們,然后讓它們自己做同樣的事情。 你應該解釋一下:

  • 沖突后,.r1,.r2,.mine和原始文件的含義是什么?
  • 演示如何以圖形方式解決沖突
  • 現在重新編譯並再次測試軟件以確保
  • 再次備份.mine文件,以確保
  • 然后提交

境內有許多SCM更復雜的事情,而這只能更晚后基本是很好理解的解釋。 甚至不用提及合並或標記或類似的東西,直到他們有幾周的日常經驗。 否則,復雜性和額外的風險將使這個新工具對他們來說更加“無用”。

同樣,這里的關鍵是以軟件中立的方式強調每日SCM工作流程,並慢慢解釋特定SCM系統出現時的怪癖。 合並是唯一需要首先解釋的復雜因素,因為它可能是每天遇到的唯一痛苦的事情。 其他所有內容都應該在出現時加以解釋。

對於所需程序的簡單“備忘單”,一步一步給出,是最好的方法。 SVN確實有一些不明顯的陷阱。 我已經參與了使用它的新人,有時他們會從當前的版本中刪除整個代碼塊等等。當然,你總是可以回過頭來獲取以前的版本,但是SVN 可怕的和危險的新人。 牢記這一點,並為所需的操作編寫非常簡單但明確的指令!

“我怎樣才能讓它們像版本控制一樣?”

刪除他們的工作副本,他們將很快掌握有用的版本控制軟件!

說真的,使用VCS與成熟的開發人員並駕齊驅。 如果你不知道為什么你想要Subversion,我不會相信他們是開發者。 他們可能有技能編程,但編程只是開發人員工作的一部分。

我確實相信,在你丟失代碼之前,你真的永遠不會欣賞VCS。

  • 無限撤消 - 無需擔心丟失的更改
  • 備份,不再是你的責任了
  • '時間機器'功能 - 上周五晚上的代碼是什么樣的?
  • 合作
  • 中央,“官方”版本的源代碼使得易於構建版本
  • 比較:有人敢碰你的代碼,他究竟改變了什么?
  • 標記:標記穩定版本,可以進行演示,您可以繼續在代碼庫中進行開發

只有當兩個開發人員修改相同源文件中的同一行時才需要'合並'。 它在小團隊中並不經常發生,需要幾分鍾才能解決。 版本控制系統自動合並所有其他更改。

如果他們大多是學生,那么在“現實世界”中有一個賣點就是很多人非常重視版本控制。

如果他們害怕刪除某些內容,請演示刪除一些重要文件並演示恢復已刪除文件的能力。

或者他們可能喜歡不同類型的版本控制,例如git或mercurial。

給他們一個關於svn的簡短講話。 告訴他們好處是什么以及如何使用它。

我設法在大學的第一份工作中拿起SVN並沒有遇到任何麻煩,盡管我在使用tortoise SVN的文件系統級別使用它。 我不是那么聰明,所以如果我可以拿起它,任何人都可以。

與它們一起運行一些場景,了解為什么版本控制是好的。 更好的是,讓他們通過一些玩具項目,時間壓力使他們經常提交。 在某些情況下,只允許它們通過svn共享代碼,而在其他情況下只能通過共享目錄共享代碼。

之后他們會知道它是什么。

你真的不能讓任何人喜歡它。 但是如果你自己開始使用它並樹立了一個很好的例子,那么好處就會變得明顯。 您需要不斷更新服務器並確保服務器已備份。 這樣,當系統中存在一個瘋狂的錯誤時,您將擁有日志以顯示導致該錯誤的更改。 你知道你需要做什么。 不要讓別人的無知阻止你。

版本控制最大的問題是沖突解決。 如果您真的想玩安全,請嘗試以下工作流程:

  1. 在開始編碼之前,每個開發人員都從主干創建一個分支;
  2. 開發人員在他自己的分支中實現一個功能並提交(不需要更新,因為他是他的分支中的唯一開發人員);
  3. 一些更有經驗的開發人員審查代碼,測試並將分支修訂合並到主干;
  4. 沖洗並重復

Subversion 1.5新功能非常適合這種工作流程。

試試這個 我發現它是'SVN for dummies'搜索,它被描述為'傻瓜SVN,奶奶可以理解的指南':D

這是一個體面的SVN“cheatsheet”,描述了基本用法: http//abbeyworkshop.com/howto/misc/svn01/

K讓你的朋友讀這個。 接下來,在幾個寵物項目中首先學習cli可以大大澄清這一點。 我第一次看到subclipse讓我討厭eclipse。 部分是因為我之前從未使用過顛覆。

  • check out =獲取存儲庫中代碼的本地副本。
  • Update =確保您的本地副本與主副本保持同步。 又名服務器。
  • commit =將更改添加到主副本
  • merge =你加上其他人已經提交了你已經提交。 合並允許您通過一點監督編輯保留兩組更改。

合並是一個很好的功能,但一開始有點復雜。

我建議他們至少閱讀基本部分 http://svnbook.red-bean.com/en/1.5/index.html ,它寫得很精彩。它涵蓋了使用命令行工具,但無論你是什么界面,概念都是一樣的使用(即TortoiseSVN或Subclipse)

SVN跟蹤項目啟動后的所有變化,因此幾乎沒有辦法通過點擊“錯誤”按鈕丟棄你的工作。 我真的認為所有重要的工作都應該在版本控制之下 ,即使沒有團隊(我只使用代碼並使用它)。

在我讀完這本小書之前 ,我從未真正看到過這一點 ,試着讓它們至少閱讀前20頁。 在subversion和任何編輯器的“撤消”按鈕之間有一個很好的類比,這可能說服他們使用它(它與我合作:))

發送給:

給他們留下深刻印象的是,任何使用半個合適的源控制系統(即不是VSS)的人都會將他們詆毀為完全和徹底的傻瓜。

你需要首先在版本控制的概念上出售它們,以便他們了解svn的工作原理。

要嘗試的一些事情是

  • 創建沙箱存儲庫以進行培訓和實驗
  • 嘗試組織一些培訓課程/研討會。 如果您對自己的運行沒有信心,請嘗試與當地的Linux用戶組聊天,看看他們是否認識可以提供幫助的人。
  • 記錄您的開發過程,包括常見的subversion使用場景。

值得向學生們指出,源代碼控制經驗對他們的簡歷來說也是一個優勢。

關於提交.project文件的具體問題,您可以在屬性上設置svn:ignore屬性,也可以在每個用戶subversion配置文件中設置global-ignores值。

您可能希望為調用svn命令之前需要顯式確認的最危險命令(我主要考慮恢復)創建別名。

此外,如果他們使用Eclipse,他們可以設置他們的編輯器,以便它保留當前代碼的N個工作副本。 我已經從這個功能的幾個愚蠢的版本控制錯誤中拯救了自己。

他們總是可以嘗試“窮人的CVS”:讓他們在簽入/退出任何東西之前做一段他們的代碼,並將它們存儲在硬盤中的某個地方。

最后,他們會有一堆文件,如:

  • MyProject01.zip
  • MyProject02.zip
  • (等等)

這將使他們明白他們的“工作”不會被“摧毀”以防他們做一些愚蠢的事情,並且會非常麻煩,迫使他們學習如何正確使用SVN(來吧,這並不難! )。

我個人發現這個窮人的方法遠遠優於Visual SourceSafe:在一個前雇主我被迫使用那個怪物......在第二次存儲庫完全崩潰后,他們感謝我:D

如果您正在使用Windows機器進行開發,請嘗試使用TortoiseSVN作為您的subversion客戶端。 界面真的很棒。 我會幫助他們擺脫版本控制恐懼。

這完全取決於使用新東西的信心,並了解它們正在使用的東西。 一旦你使用它,它很高興它有效,'分歧'消失了。

首先嘗試培訓概述 - 這是一個提供一些powerpoint幻燈片的項目

給他們一本svn書並鏈接到TortoiseSVN,一旦他們有了概述,就可以閱讀它。

然后嘗試一個帶沙盒回購的實踐工作坊。

然后可以在他們真正使用它的同時提供一周左右的幫助。

這種方法適用於所有方面,而不僅僅是SVN。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM