1. 程式人生 > >svn 版本控制器介紹

svn 版本控制器介紹

1.svn簡介

    subversion簡稱svn,subversion是實現版本控制的一種工具軟體,是apache基金會組織的一個開源軟體。

2.svn的解決的實際問題

  • 小明負責的模組就要完成了,就在即將Release之前的一瞬間,電腦突然藍屏,硬碟光榮犧牲!幾個月來的努力付之東流——需求之一:備份
  • 這個專案中需要一個很複雜的功能,老王摸索了一個星期終於有眉目了,可是這被改得面目全非的程式碼已經回不到從前了。什麼地方能買到哆啦A夢的時光機啊?需求之二:程式碼還原
  • 小剛和小強先後從檔案伺服器上下載了同一個檔案:Analysis.java。小剛在Analysis.java檔案中的第30行聲明瞭一個方法,叫count(),先儲存到了檔案伺服器上;小強在Analysis.java檔案中的第50行聲明瞭一個方法,叫sum(),也隨後儲存到了檔案伺服器上,於是,count()方法就只存在於小剛的記憶中了——需求之三:協同修改
  • 老許是一位專案經理,我會告訴你他把每一個版本都儲存一份嗎?我會告訴你這些工程裡其實有很多檔案都是重複的嗎?我會告訴你老許為這事刪了很多電影嗎?——需求之四:多版本專案檔案管理
  • 老王是另一位專案經理,每次因為專案進度捱罵之後,他都不知道該扣哪個程式設計師的工資!就拿這次來說吧,有個該死的Bug除錯了30多個小時才知道是因為相關屬性沒有在應用初始化時賦值!可是二胖、王東、劉流和正經牛都不承認是自己乾的!——需求之五:追溯問題程式碼的編寫人和編寫時間
  • 小溫這兩天幸福的如同掉進了蜜罐裡,因為他成功的得到了前臺MM麗麗的芳心,可他鬱悶的是這幾天總是收到QA小組的郵件,要求他修正程式中存在的Bug,可他自己本地電腦上是沒有這些Bug的,“難道我的程式碼被哪個孫子給改了?”。是的,小溫沒來的時候,麗麗是QA小組小鄭的女朋友啊!——需求之六:許可權控制

3.svn的工作原理

    svn是採用客戶端/伺服器(b/s),伺服器的版版本庫種儲存了專案的各個版本,程式設計師可以從版本庫中檢出整個專案作為本機的一個副本使用,svn支援程式設計師將自己的整個工作副本更新至版本庫,也支援將本地副本的最新改變更新到伺服器端,而且後面的更新不會覆蓋前面的更新,而是作為一個新的版本被儲存下來——SVN甚至支援將本地工作副本恢復為伺服器端儲存的某一個歷史版本。

4. svn三大操作

5.配置版本庫

    建立資料夾作為版本庫,例如D:\SvnRepository,將D盤的 SvnRepository作為根目錄,在SvnRepository中建立一個新的專案OA和CRM資料夾,例如D:\SvnRepository\OA和D:\SvnRepository\CRM。建立版本庫的命令:svnadmin create +倉庫路徑

例如:svnadmin create D:\SvnRepository\OA 。此時OA就成為了一個專案的版本庫,版本庫架構為:

 

  1. 檢出(checkout)將伺服器新建立的專案下載到本地,這一般是專案組建後的第一步,只需執行一次。
  2. 更新(update)將本地檔案與伺服器專案的最新版本保持一致,通常在上班時或者在公共檔案被修改時執行。
  3.  提交(commit)將本地修改提交到伺服器,一般是在自己負責的板塊或者專案完成是提交。

  

6. 啟動伺服器端程式

    命令:svnserve -d -r +倉庫路徑 

    例如:svnserve -d -r D:\SvnRepository\OA