版本控制器SVN

一、版本控制

  • 為什么需要版本控制?
    • 小明負責的模塊就要完成了,就在即將Release之前的一瞬間,電腦突然藍屏,硬盤光榮犧牲!幾個月來的努力付之東流——需求之一:備份!
    • 這個項目中需要一個很復(fù)雜的功能,老王摸索了一個星期終于有眉目了,可是這被改得面目全非的代碼已經(jīng)回不到從前了。什么地方能買到哆啦A夢的時光機???需求之二:代碼還原!
    • 小剛在java文件中的第30行聲明了一個方法,叫count(),保存到了文件服務(wù)器上;小強在Analysis.java文件中的第50行聲明了一個方法,叫sum(),也保存到了文件服務(wù)器上,于是,count()方法就只存在于小剛的記憶中了——需求之三:協(xié)同修改!
    • 老許是一位項目經(jīng)理,我會告訴你他親自為工程創(chuàng)建版本號嗎?我會告訴你他把每一個版本都保存一份嗎?我會告訴你這些工程里其實有很多文件都是重復(fù)的嗎?我會告訴你老許為這事刪了很多電影嗎?——需求之四:版本管理和版本發(fā)布!
    • 老王是另一位項目經(jīng)理,每次因為項目進度挨罵之后,他都不知道該扣哪個程序員的工資!就拿這次來說吧,有個該死的Bug調(diào)試了30多個小時才知道是因為相關(guān)屬性沒有在應(yīng)用初始化時賦值!可是二胖、王東、劉流和正經(jīng)牛都不承認是自己干的!——需求之五:追溯問題代碼的編寫人和編寫時間!
    • 小溫這兩天幸福的如同掉進了蜜罐里,因為他成功的得到了前臺MM麗麗的芳心,可他郁悶的是這幾天總是收到QA小組的郵件,要求他修正程序中存在的Bug,可他自己本地電腦上是沒有這些Bug的,“難道我的代碼被哪個孫子給改了?”。是的,小溫沒來的時候,麗麗是QA小組小鄭的女朋友??!——需求之六:權(quán)限控制!

使用版本控制能夠解決上面的問題嗎?是的!

  • 什么是版本控制?
    • 版本控制:Revision control,最初來源于工程設(shè)計領(lǐng)域,是維護工程藍圖的標準做法,能追蹤工程藍圖從誕生一直到定案的過程。是一種記錄若干文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng)。
    • Subversion就是一款實現(xiàn)版本控制的工具軟件,通常也稱為版本控制器,簡稱SVN。

SVN的工作原理:采取客戶端/服務(wù)器模式,多個協(xié)同開發(fā)的程序員把各自的源代碼提交到版本控制器的服務(wù)器端,由SVN服務(wù)器對各個版本進行編號,并負責管理沖突,SVN能夠?qū)_突的代碼以比較友好的格式呈現(xiàn)出來,便于開發(fā)人員比較,進行取舍。

  • SVN基本操作
    • 檢出(checkout):將一個服務(wù)器端創(chuàng)建好的項目整個下載到本地,這是到項目組后參與開發(fā)的第一步,只需執(zhí)行一次。
    • 更新(update):將本地文件更新為服務(wù)器端的最新版本,通常為每天上班時或修改公共文件之前執(zhí)行一次。

提交(commit):將本地修改提交到服務(wù)器端。通常每天下班前或每實現(xiàn)一個功能、完成一個模塊時執(zhí)行一次。

 

 

本教程由尚硅谷教育大數(shù)據(jù)研究院出品,如需轉(zhuǎn)載請注明來源,歡迎大家關(guān)注尚硅谷公眾號(atguigu)了解更多。