初次安裝SVN的過程及心得體會

這是鄙人在完成軟件項目與過程管理的課後實驗做業的全過程及心得體會。
但願能對初次使用本地版本管理工具SVN的你有所幫助。

軟件項目與過程管理是我所在的專業大三時才修習的一門課程,。
在實驗課以前,我除了初步地使用過git,其餘並沒有接觸過版本管理工具。任課老師在課程開始的幾分鐘內,給咱們簡單的介紹了SVN,便將實驗指導書和老師曾經編寫的一份Java實踐開發工具文檔給咱們,讓咱們自學其中的內容,並完成實驗報告。過程當中,實驗指導書上的步驟並不詳細,致使我及其餘同窗都沒能很好地從其中學習到SVN的配置方法及基本操做方法。
因而,我開始在網上尋求答案,可網上的相關博客文章大多不夠詳細,且難以理解。幾經查找學習並嘗試,我終於完成了最基本的操做。

版本控制及SVN的簡介

版本控制【Revision control】,最初來源於工程設計領域,是維護工程藍圖的標準作法,能追蹤工程藍圖從誕生一直到定案的過程,是一種記錄若干文件內容變化,以便未來查閱特定版本修訂狀況的系統。
Subversion就是一款實現版本控制的工具軟件,一般也被稱爲版本控制器,簡稱SVN。Subversion是Apache軟件基金會組織下的一個項目。
  • SVN的工做原理
    SVN採起客戶端/服務器(C/S)模式--在服務器的版本庫中保存項目文件的各個版本,全部參與協同開發的程序員在本身本地電腦上保存一個工做副本,這個工做副本能夠爲任意文件格式,代碼、文檔或者圖片。SVN支持程序將本地副本更新到服務器端的最新版本,也支持將本地副本的最新版本更新到服務器端,並記錄下版本號,並且後面的更新不會覆蓋前面的更新版本,而是做爲一個新的版本被保存下倆--SVN甚至支持將本地工做副本恢復爲服務器端保存的某一個歷史版本。

SVN工做原理拓撲圖

Server指的是Subversion服務器端的一個程序;程序接受來自客戶端的請求並響應;數據保存在SVN repositorygit

  • SVN的基本操做
    檢出(checkout):將一個服務器端建立好的項目整個下載到本地,這是到項目組後參與開發的第一步,只需執行一次。
    更新(update):將本地文件更新爲服務器端的最新版本,一般爲天天工做開始前或修改公共文件以前執行一次。
    提交(commit):將本地修改提交到服務器端。一般爲天天工做完成或每實現一個功能、完成一個慕課時執行一次。

Subversion的安裝與配置

  • 下載與安裝
    Apache-Subversion-1.10.2 官方下載地址:https://www.visualsvn.com/dow...
    下載後解壓至安裝目錄,如:我放在了D:做業軟件過程與項目管理實驗課實驗二 Subversion及TortoiseSVN實驗Apache-Subversion-1.10.2
  • 配置
    接下來咱們須要爲可以啓用SVN,配置變量環境。
    找到系統變量中的path,添加變量值:D:做業軟件過程與項目管理實驗課實驗二 Subversion及TortoiseSVN實驗Apache-Subversion-1.10.2bin
    ps:這個變量路徑也就是咱們解壓後獲得文件目錄中bin文件夾的路徑。配置環境變量的好處是咱們能夠在命令行的任意目錄下運行bin文件夾中的可執行程序。
  • 配置檢查
    咱們能夠經過在命令行內輸入svn --version,以檢驗svn環境變量配置是否正確。顯示出以下圖所示的SVN版本信息等內容,即代表環境變量配置成功。
    圖片描述
    顯示的內容除了版本信息之外,還顯示了一些可使用的版本庫訪問模塊

    到目前爲止,咱們只配置好了SVN的Server服務器,要想讓SVN真正能用,咱們還須要建立svn的repository,用於存放提交上的數據。程序員

建立SVN版本庫

我在D盤建立 D:\svnRep,svnRep即本地版本庫的根目錄,咱們但願svnRep能幫助咱們管理多個項目。因此咱們在svnRep目錄下建立不一樣的文件夾,如我建立的OA和ERP,做爲多個項目的存儲庫。可是此時我建立的文件夾還並未與Server相連,因此咱們還須要在命令行窗口下輸入一些指令來完成這項操做。
咱們打開命令行,使用`svnadmin create D:\svnRep\CRM`,將該版本庫與Server鏈接。
![圖片描述][3]
create後的路徑爲版本庫根目錄的路徑    
此時,在D:\svnRep\CRM目錄下會多出一些文件。以下圖所示。
![圖片描述][4]
conf文件內是放在的是跟當前版本相關的配置文件,以後咱們在設置版本庫權限的時候,會使用到其中的文件;db文件內保存的是server的數據庫文件;hooks內存儲的是鉤子程序(相關操做觸發器);locks跟文件的鎖定有關

啓動svn服務器

運行客戶端,咱們須要在命令行中輸入命令 `svnserve -d -r D:\svnRep\CRM` 
![圖片描述][5]
此時,命令行再也不容許你輸入指令,代表服務器已經啓動
咱們能夠經過查看它是否監聽3690的端口確認服務是否啓動。
在另外一個命令行中輸入以下指令 netstat -an,查找地址尾號爲3690的地址,若是存在則代表服務確實啓動了。
![圖片描述][6]
咱們能夠看到如圖所示的 尾號爲3690的本地地址
  • 註冊Windows服務
    因爲啓動服務器的命令行窗口是在第一個命令行窗口,一旦此命令行窗口被關閉,服務就會中止。咱們在實際操做中,一直開着該命令行窗口十分不便,因此咱們能夠將svn服務端程序註冊爲Windows服務,就可讓svn服務隨系統一塊兒啓動。
    步驟以下:
    Step 1 啓動 計算機->管理->服務和應用程序
    圖片描述
    服務中有不少可自動或手動啓用的服務
    Step 2 從新開啓一個命令行窗口,輸入命令 sc create SVNservice binpath= "D:\做業\軟件過程與項目管理實驗課\實驗二 Subversion及TortoiseSVN實驗\Apache-Subversion-1.10.2\bin\svnserve.exe --service -r D:\svnRep" start= auto depend= Tcpip
    之因此指定的版本庫爲svnRep,是由於這樣訪問時咱們能夠決定訪問svnRep下具體某一個倉庫。
    執行了這段指令以後,命令行可能會彈出windowsOpenSCManager 失敗5 拒絕訪問的提示。這是由於咱們建立新服務的權限不足。有兩種解決方法,第一種是以管理員身份運行命令行,第二種是在註冊表HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA將其值改成0。
    建立成功的提示內容以下圖所示。
    圖片描述
    此時,咱們能夠再次經過netstat -an來查看是否存在3690的本地地址。

客戶端訪問及svn三個基本命令的操做

接下來咱們進入svn的三個基本命令的操做。
我在D:\WorkSpace\WorkSpaceSVN 目錄下建立了兩個工做區文件夾,分別爲SpaceA和SpaceB,表明兩個成員的工做代碼等存放的文件夾。咱們將經過svn實現文件在兩個工做區文件夾的檢出、更新和提交。

在命令行中輸入指令 `svn checkout svn://localhost/CRM`因爲咱們如今是將svn的Server部署在本機服務器上,因此是localhost。

圖片描述

這步操做咱們是在SpaceA的目錄下執行,因此是在將服務器庫中的文件下載到SpaceA中,可是當前服務器的版本庫中,並無文件,因此SpaceA中仍熱看不到文件。
執行指令後,命令行提示 檢出版本 0。

下面,咱們在SpcaeA的CRM下建立一svn_test.txt文件。在SpaceA\CRM\CRM的目錄下提交這個文件。在命令行中輸入的指令爲`svn commit svn_test.txt`,執行後命令行可能會提示 提交失敗。

圖片描述
緣由是初次提交的時候,提交的文件未歸入版本控制。因此咱們要在命令行中輸入 svn add test.txt.
圖片描述
下面,咱們在命令行中輸入 svn commit svn_test.txt,執行後命令行可能仍是會提示錯誤。
圖片描述
緣由是,咱們在提交時還應該添加日誌。因而,咱們在命令行中輸入 svn commit -m "My first commit" svn_test.txt,可是命令行可能仍是會提示錯誤。
圖片描述數據庫

這是因爲權限不足,因而,咱們還須要版本庫的conf中去設置權限。打開D:\svnRep\CRM\conf中的svnserve.conf將#anon-access=read,修改成anon-access=write。注意:annon-access前不能留有空格。修改並保存後,再次在原來的命令行中輸入`svn commit -m "My first commit" svn_test.txt`,提示以下,即commit成功。

圖片描述
提示後的版本號爲1,這1指的不是每一個文件的版本號,是整個版本庫,當前版本的版本號。
咱們再經過命令行從版本庫中commit文件到SpaceB中。
圖片描述
接下來咱們來實現版本庫文件的更新。
修改SpaceB中的svn_test.txt中的內容。以下圖所示。
圖片描述windows

再將修改後的svn_test.txt,commit到版本庫。以下圖所示。

圖片描述
提交後的版本號爲2.
下面,咱們進入到SpaceA中的CRM,咱們經過命令行的指令來更新CRM中的svn_test.txt.
指令爲 svn update svn_test.txt
圖片描述
此時,咱們能夠發現SpaceA中的svn_test.txt中的內容已被更新。
圖片描述服務器

相關文章
相關標籤/搜索