這是鄙人在完成軟件項目與過程管理的課後實驗做業的全過程及心得體會。 但願能對初次使用本地版本管理工具SVN的你有所幫助。
軟件項目與過程管理是我所在的專業大三時才修習的一門課程,。 在實驗課以前,我除了初步地使用過git,其餘並沒有接觸過版本管理工具。任課老師在課程開始的幾分鐘內,給咱們簡單的介紹了SVN,便將實驗指導書和老師曾經編寫的一份Java實踐開發工具文檔給咱們,讓咱們自學其中的內容,並完成實驗報告。過程當中,實驗指導書上的步驟並不詳細,致使我及其餘同窗都沒能很好地從其中學習到SVN的配置方法及基本操做方法。 因而,我開始在網上尋求答案,可網上的相關博客文章大多不夠詳細,且難以理解。幾經查找學習並嘗試,我終於完成了最基本的操做。
版本控制【Revision control】,最初來源於工程設計領域,是維護工程藍圖的標準作法,能追蹤工程藍圖從誕生一直到定案的過程,是一種記錄若干文件內容變化,以便未來查閱特定版本修訂狀況的系統。 Subversion就是一款實現版本控制的工具軟件,一般也被稱爲版本控制器,簡稱SVN。Subversion是Apache軟件基金會組織下的一個項目。
Server指的是Subversion服務器端的一個程序;程序接受來自客戶端的請求並響應;數據保存在SVN repositorygit
svn --version
,以檢驗svn環境變量配置是否正確。顯示出以下圖所示的SVN版本信息等內容,即代表環境變量配置成功。到目前爲止,咱們只配置好了SVN的Server服務器,要想讓SVN真正能用,咱們還須要建立svn的repository,用於存放提交上的數據。程序員
我在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跟文件的鎖定有關
運行客戶端,咱們須要在命令行中輸入命令 `svnserve -d -r D:\svnRep\CRM` ![圖片描述][5] 此時,命令行再也不容許你輸入指令,代表服務器已經啓動 咱們能夠經過查看它是否監聽3690的端口確認服務是否啓動。 在另外一個命令行中輸入以下指令 netstat -an,查找地址尾號爲3690的地址,若是存在則代表服務確實啓動了。 ![圖片描述][6] 咱們能夠看到如圖所示的 尾號爲3690的本地地址
sc create SVNservice binpath= "D:\做業\軟件過程與項目管理實驗課\實驗二 Subversion及TortoiseSVN實驗\Apache-Subversion-1.10.2\bin\svnserve.exe --service -r D:\svnRep" start= auto depend= Tcpip
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA
將其值改成0。netstat -an
來查看是否存在3690的本地地址。接下來咱們進入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中的內容已被更新。
服務器