1. 程式人生 > >SVN相關介紹與操作簡介

SVN相關介紹與操作簡介

SVN使用手冊

  • 如果開發過程中沒有SVN?

軟體研發過程中,任意一個專案都是由一個團隊完成的,而不能依靠單一個體完成。

在團隊開發過程中,資料資料的共享與同步將成為開發過程中比較突出的問題。

圖一:原始開發管理模式(COPY模式)

缺點:

      1. 程式碼管理混亂
      2. 備份多個版本,佔用磁碟空間大
      3. 解決程式碼衝突困難
      4. 容易引發BUG
      5. 難於追溯問題程式碼的修改人和修改時間
      6. 難於恢復至以前正確版本
      7. 無法進行許可權控制
      8. 專案版本釋出困難

為保障團隊開發過程中人員溝通各方面成本的降低,必須使用一種有效的方式減少溝通環節,提高開發效率,對資源的共享進行管理。

圖二:現階段的開發管理模式(Tools模式)

相關概念:

伺服器          server            專用的硬體伺服器

倉庫              repository      專用於某個專案的磁碟空間,位於硬體伺服器中

檢出              checkout        一次性工作,下載程式碼並完成與伺服器間的關聯

上傳/提交      commit          多次工作

更新              update           多次工作

記錄日誌       logger            記錄操作相關的資訊,包括動作,使用者,時間,資訊

版本號碼       version          記錄檔案被操作的次數,即版本數

作為一個管理共享資源的工具必須具備以下幾點:

  1. 能夠記錄日常事務中所有的檔案的新建,編譯,刪除
  2. 能夠記錄檔案的操作人,操作時間,操作描述資訊
  3. 對於同一個檔案,能夠提供更多的歷史版本供適用者參考
  4. 對於不同的檔案,能夠提供更高的管理許可權,限制使用者的使用能力
  5. 對於不同的專案/Case,能夠提供更多的空間管理模式
  6. 對於不同的使用者,提供遠端訪問支援,使使用者更快捷進行資源共享
  • 什麼是版本控制

版本控制(Revision control)是維護工程藍圖的標準做法,能追蹤工程藍圖從誕生到定案的過程。是一種記錄多個檔案內容變化,以便將來查閱特定版本修訂情況的系統。

  • 主流的版本控制工具

VSS:Visual Source Safe(Microsoft Visual Studio成員)主要任務是負責專案檔案的管理

CVS:march-hare出品的一套用於進行檔案版本控制軟體

SVN:Apache軟體基金會名下的一套用於進行檔案版本控制軟體

2000年初,開發人員要寫一個CVS的自由軟體代替品,它保留CVS的基本思想,但沒有它的錯誤和侷限,保留CVS的基本特性但去除CVSbug和不好的特性。

20002月,他們聯絡《使用CVS開發開源專案》(Open Source Development with CVS(Coriolis, 1999)的作者Karl Fogel,並徵求了他是否願意在這個新的專案中擔任一個角色。巧合的是,當時Karl已經和他的朋友Jim Blandy討論了一個關於新的版本控制系統的設計。在1995年,這兩人就成立了Cyclic Software,一個提供CVS的商業支援的軟體公司。雖然他們經營商業服務,但是仍然在每天都在工作中使用CVS。使用CVS的挫折感使得Jim認真思考更好的方法來管理資料,不但確定名字為“Subversion”,而且完成了Subversion檔案庫的基礎設計。

CollabNet的電話到來時,Karl立即答應了加入專案中,而且Jim讓他的僱主RedHat Software同意讓他在這個專案中不定期工作。CollabNet僱用了KarlBen Collins-Sussman,並在5月開始了詳細設計工作。在得到了來自CollabNetBrian BehlendorfJason RobbinsGreg Stein(當時是一名活躍在WebDAV/DeltaV規範過程的自由程式設計師)很多創意的幫助下,Subversion很快地引起了一個活躍開發者社群的注意。它找出並歡迎很多同樣在CVS上受到挫折的社員能來為這個專案做點什麼。

Subversion 最初的設計Team定下了幾個簡單的目標。 它必須在功能上可取代 CVS,也就是說, 所有 CVS 可做到的事, 它都要能夠作到。 在修正最明顯的瑕疵的同時, 還要保留相同的開發模式。 還有, Subversion 應該要和 CVS 很相像, 任何 CVS 使用者只要花費少許的力氣, 就可以很快地上手。

經過十四個月的編碼後, Subversion 2001831日開始實現 “自行管理”。 也就是說, 開發人員不再使用 CVS 來管理 Subversion 的程式碼, 而以 Subversion 自己來管理。

200911月,SubversionApache Incubator專案所接收。

20101月,正式成為Apache軟體基金會的一個頂級專案,所以為Apache Subversion.

目前Apache Subversion的主席為Greg Stein, 專案領導者Release managerWandisco公司。

  • SVN是什麼

SVN(subversion)是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數開源軟體都使用SVN作為程式碼版本管理軟體。不要狹義的理解只服務於軟體研發,很多公司都適用SVN管理整個公司的文件

  • SVN的作用

針對軟體研發企業的軟體生產過程而言,SVN用於管理整個開發過程中的原始碼,進行版本控制。

  • SVN體系結構圖

SVN服務端指令

SVN服務端指令是指在伺服器端進行操作用於對伺服器進行系統級設定與操作

      1. 檢視svn版本資訊

svnadmin --version

      1. 建立資料倉庫

svnadmin create E:\repository\svn\it

準備工作

          1. 首先手動建立磁碟目錄作為總資料倉庫:E:\repository\svn
          2. 再手動建立磁碟目錄作為具體的資料倉庫:E:\repository\svn\it
          3. 執行指令將指定目錄設定為具體的資料倉庫

指令結果

       將設定指定目錄為SVN倉庫路徑,用於儲存共享資料

資料倉庫配置檔案

資料儲存目錄

版本庫鉤子目錄

儲存庫鎖目錄

conf

目錄

存放版本庫所用配置檔案的目錄

authz

檔案

授權資訊

passwd

檔案

使用者安全資訊,包含使用者名稱與密碼

svnserve.conf

檔案

服務相關資訊

db

目錄

版本資料儲存目錄

hooks

目錄

存放版本庫勾子目錄

locks

目錄

儲存庫鎖目錄,用來跟蹤庫的訪問者

注意事項

       建立資料倉庫對應的路徑必須存在,而被建立的倉庫名稱路徑則自動建立

      1. 啟動SVN伺服器(單倉庫)

svnserve –d –r E:\repository\svn\it

準備工作

          1. 必須存在該路徑,且是一個有效的SVN資料倉庫

指令結果

       啟動對應的資料倉庫,作為服務,等待響應使用者的SVN管理操作

      1. 啟動SVN伺服器(多倉庫)

svnserve –d –r E:\repository\svn

準備工作

          1. 必須存在該路徑,並且其中包含有效的SVN資料倉庫路徑

指令結果

       啟動對應目錄下所有的資料倉庫,作為服務,等待響應

注意事項

       多倉庫啟動模式下只有有效的倉庫路徑才可以被載入

【補】window指令:

查詢當前計算機啟動服務列表,SVN預設埠為3690

netstat –an

建立SVN伺服器啟動為window服務

sc create SVN-Service binpath= "D:\Program Files\Subversion\bin\svnserve.exe --service -r E:\repository\svn" displayname= "SVN-Service" start= auto depend= Tcpip

注意:上述指令為DOS指令,格式要求嚴謹,不能隨意修改

sc delete 服務名稱

  • SVN客戶端指令

SVN客戶端指令是指在客戶端進行操作用於對完成與伺服器資訊的互動

      1. 檢出資料倉庫資訊(單倉庫)

svn checkout svn://192.168.1.100 .

準備工作

          1. 磁碟中建立一個目錄,用於存放與SVN伺服器進行互動的資料
          2. 執行指令時,將當前路徑設定為上述目錄

指令結果

       將指定的SVN伺服器中的資訊檢出到當前目錄,並在當前目錄中生成與SVN伺服器的連線資料,方便下一次與SVN伺服器的連線。該目錄中的不能手工修改

注意事項

  1. 如果執行指令時,沒有進入到儲存資料的目錄,需要將指令修改為儲存到指定路徑的格式

              svn checkout svn://192.168.1.100 E:\work\jt

  1. 本機操作時,可能存在有多個IP地址,不妨換用localhost識別當前計算機

svn checkout svn://localhost E:\work\jt

  1. 連線時,可以新增埠號進行,預設可以不加,自動訪問3690埠

svn checkout svn://localhost:3690 E:\work\jt

  1. 指令的最後一個引數,也就是同步的目錄如果省略,預設為當前,等同於輸入了.作為當前目錄

svn checkout svn://localhost:3690 .

svn checkout svn://localhost:3690

      1. 檢出資料倉庫資訊(多倉庫)

svn checkout svn://192.168.1.100/it.

準備工作

          1. 磁碟中建立一個目錄,用於存放與SVN伺服器進行互動的資料
          2. 執行指令時,將當前路徑設定為上述目錄

指令結果

       將指定的SVN伺服器指定倉庫中的資訊檢出到指定目錄,並在指定目錄中生成與SVN伺服器的連線資料,方便下一次與SVN伺服器的連線。

注意事項

  1. 所有注意事項參看單倉庫提供模式
  2. 由於多倉庫啟動模式下,提供有多個倉庫可使用,因此在指定了SVN伺服器位置後,必須指定倉庫名稱
  3. 多倉庫檢出後會在檢出目錄中產生一個與被檢出倉庫相同名稱的目錄
      1. 將本地檔案/目錄加入版本控制

svn add User.java

準備工作

          1. 在本地目錄中建立檔案/目錄,用於加入版本控制

指令結果

       將本地檔案/目錄加入到版本控制,受SVN管理。

注意事項

  1. 未加入版本控制的檔案/目錄,無法與伺服器進行互動
  2. 目錄加入到版本控制後,目錄中的所有檔案與目錄都將一併加入版本控制
  3. 如果是多倉庫檢出,需要設定倉庫名稱,然後設定檔名稱

svn add it/User.java

或進入對應目錄,使用add指令加入版本控制

      1. 將加入版本控制的檔案/目錄提交到伺服器

svn commit User.java

準備工作

          1. 在本地目錄中存在有已加入版本控制的檔案/目錄

指令結果

       將指定檔案或目錄提交到SVN伺服器,並記錄相關日誌描述資訊

注意事項

  1. 由於日誌資訊是SVN進行版本控制中的重要資訊,因此不能省略
  2. 只有加入SVN版本控制的檔案/目錄才可以進行提交,未加入SVN版本控制的檔案/目錄不參與提交,因此執行前必須保障add操作的完成
  3. 提交版本到SVN伺服器時,需要進行許可權認證,除進行正常的登入認證,也可以使用匿名使用者進行操作,需要修改匿名使用者的訪問許可權

開啟匿名使用者的操作功能

開啟資料倉庫中conf/svnserve.conf檔案的anon-access = write選項,並設定對應的操作許可權

  1. SVN伺服器的認證操作是在每次與SVN伺服器進行資料交換時完成,因此無需重啟伺服器
  2. 提交後的文件不接受重複提交,SVN伺服器發現當前程式碼與伺服器程式碼版本相同時,不進行提交操作
  3. SVN伺服器中儲存的文件不是原始檔格式,
      1. 更新本地版本為SVN伺服器最新版本

svn update

指令結果

       將本地檔案/目錄資訊更新到與伺服器相同版本資訊

注意事項

  1. 更新時,如果不新增指定的檔案/目錄名稱,則更新整個資料倉庫

svn update fileName.txt

  1. 如果本地版本與伺服器相同,則不進行任何操作
      1. 刪除本地檔案

svn delete User.java

準備工作

          1. 在本地目錄中存在有將要被刪除的SVN控制檔案/目錄

指令結果

       將本地檔案/目錄資訊刪除

注意事項

  1. delete指令只能刪除本地檔案,並沒有提交/同步到SVN伺服器
  2. 該指令刪除的檔案/目錄,在未進行提交之前可通過revert指令進行恢復
      1. 恢復本地檔案

svn revert User.java

準備工作

          1. 在本地目錄中存在有使用delete指令刪除的SVN控制檔案/目錄且未提交到SVN伺服器

指令結果

       將本地被刪除檔案/目錄資訊恢復

注意事項

  1. revert指令只能恢復未提交的資料
      1. 獲取伺服器資訊

svn info

      1. 獲取伺服器目錄層次結構

svn list

      1. 獲取伺服器狀態資訊

svn status

      1. 獲取svn指令幫助

svn help

  • SVN圖形使用者介面操作——TortoiseSVN

TortoiseSVN是一款基於SVN伺服器的圖形化操作使用者介面工具。TortoiseSVN提供了基於滑鼠操作為主導的SVN版本控制管理工具

       安裝完畢後,對當前作業系統重新啟動,啟動完成後,系統主選單加入了使用TortoiseSVN對SVN伺服器進行管理的工具

       使用TortoiseSVN完成SVN版本控制管理

伺服器相關操作

      1. 建立資料倉庫

svnadmin create E:\repository\svn\it

在任意不是SVN資料倉庫的目錄中右鍵開啟選單,選擇將當前目錄建立為資料倉庫

注意:滿足如下條件之一,將彈出如下錯誤提示

      1. 當前目錄已經是資料倉庫
      2. 當前目錄是資料倉庫的子目錄
      1. 啟動SVN伺服器(單倉庫)

svnserve –d –r E:\repository\svn\it

日常工作中,SVN伺服器多采用獨立硬體伺服器構建,併發布為服務啟動,因此無需進行手工啟動伺服器的操作

      1. 啟動SVN伺服器(多倉庫)

svnserve –d –r E:\repository\svn

日常工作中,SVN伺服器多采用獨立硬體伺服器構建,併發布為服務啟動,因此無需進行手工啟動伺服器的操作

客戶端相關操作

  1. 檢出資料倉庫資訊(多倉庫)

svn checkout svn://192.168.1.100/itcast .

建立新目錄,用於本地儲存SVN伺服器對應的本地檔案,並在目錄中執行如下操作,即可創建於SVN伺服器的關聯

設定SVN伺服器倉庫名稱與檢出儲存到對應的目錄路徑

與SVN伺服器進行有效關聯後,對應的資料夾將以特殊圖示的形式呈現

  1. 將本地檔案/目錄加入版本控制

svn add User.java

在本地倉庫中新建立的檔案/目錄,不受SVN伺服器控制,需要先將其加入版本控制,對新建檔案/目錄點選右鍵,通過選單完成加入版本控制

加入版本控制後,對應的檔案/目錄將以特殊圖示的形式呈現

此時,由於本地倉庫中存在有與SVN伺服器中不同步的資訊,因此圖示發生變化

  1. 將加入版本控制的檔案/目錄提交到伺服器

svn commit User.java

在待提交的檔案上面通過右鍵選單,完成對SVN伺服器的提交操作

選擇提交後,開啟提交對話方塊,輸入提交日誌資訊

提交成功後,返回提交成功資訊回執,同時被提交檔案/目錄的圖示發生變化

提交失敗後,返回提交失敗錯誤原因

  1. 更新本地版本為SVN伺服器最新版本

svn update

在待更新的檔案/目錄/工程上面通過右鍵選單,完成從SVN伺服器進行更新的操作

更新完畢後,彈出對應的提示資訊

  1. 刪除本地檔案

svn delete User.java

在待刪除的檔案/目錄上面通過右鍵選單,完成本地檔案/目錄的刪除操作,該操作在未提交之前是可恢復的

  1. 恢復本地檔案

svn revert User.java

對已刪除的檔案/目錄,在未進行提交操作之前,可以對其進行恢復。在任意位置通過右鍵選單完成。

選擇恢復後,出現對話方塊,選擇要恢復的檔案/目錄,然後完成恢復操作

選擇確認操作後,完成恢復操作

  1. 提交衝突問題

在進行正常的提交時,如果本地版本與伺服器版本不相同,會引發衝突問題。

解決衝突問題共分為三個步驟:

步驟一:獲取伺服器最新版本

同時,針對版本不統一的檔案資訊,會生成對應的檔案,供使用者檢視

       帶有黃色驚歎號的檔案表示當前檔案與SVN伺服器中的檔案衝突,並已將衝突內容進行了合併,需要使用者手工修改。

       .mine字尾的檔案是使用者在更新之前的最後修改版本內容,可通過原始編輯器檢視

       .r*字尾的檔案是當前檔案對應的各個版本的檔案內容,r後面的數字是版本號,可

通過原始編輯器檢視

步驟二:檢視並修改衝突檔案

       開啟原始檔案,其中包含有衝突內容,使用者根據需要進行調整

步驟三:刪除衝突備份資訊,並進行提交

       將除衝突檔案之外所生成的所有檔案進行刪除,並對原始檔案進行合併衝突處理後,原始檔案狀態由衝突狀態轉換為已編輯狀態。

              此時即可正常提交,實際開發此現象大多發生在公共配置檔案或系統配置檔案上。

介面操作解決方案:

步驟一:獲取伺服器最新版本(同上)

步驟二:檢視並修改衝突檔案

              針對衝突程式碼進行建議處理

              選中衝突行(紅色標識)

步驟三:標識解決衝突

              確認解除衝突,操作完畢後,臨時檔案將被刪除

  1. 避擴音交衝突——為檔案加鎖(基於許可權)

對不希望出現衝突的檔案新增屬性

新增新的屬性

       新增svn:needs-lock屬性

確認新增屬性

       加鎖操作是為檔案設定了一種狀態,也屬於對檔案的修改,因此需要進行提交。加鎖前與加鎖後,檔案的顯示狀態發生變化。

加鎖前檔案

加鎖後文件

提交衝突問題是使用SVN等版本控制工具中令使用者最為頭疼的問題,為避擴音交衝突,可以為任何一個加入版本控制的資源提供鎖,避免多使用者同時操作同一檔案引發衝突。由於檔案鎖定後,只能由一個使用者操作,實際開發中沒有實用性,不推薦使用。

對加鎖檔案的操作分為三個步驟:

步驟一:獲取鎖

獲取鎖後,顯示當前被檔案被某個使用者鎖定

此時其他使用者再次獲取當前檔案鎖時出現衝突,同時無法對檔案進行操作

此時鎖定檔案的使用者顯示檔案被鎖定

步驟二:操作編輯檔案,並提交,提交完畢後,恢復未鎖定狀態。

  • 使用者許可權管理

svnserve.conf       svn伺服器配置

anon-access = write

匿名使用者訪問版本庫許可權,可選值read/write/none

auth-access = write

授權使用者訪問版本庫許可權,可選值read/write/none

password-db = passwd

使用者名稱密碼檔案,可以使用絕對路徑,如果使用相對路徑指相對於conf目錄的位置路徑。注意:如果該選項不開啟,使用者名稱密碼檔案將失效

authz-db = authz

授權管理檔案,可以使用絕對路徑,如果使用相對路徑指相對於conf目錄的位置路徑。注意:如果該選項不開啟,授權管理將失效

realm = My First Repository

版本庫認證域名稱,也就是需要認證的倉庫名

passwd     使用者名稱密碼管理

[users]

設定使用者資訊

harry = harryssecret

使用者名稱 = 密碼

注意:使用者名稱與密碼間的空白

authz         授權管理

[groups]

設定使用者組,便於管理

harry_and_sally = harry,sally

使用者組名 = 使用者名稱1,使用者名稱2,使用者名稱3,……

[/foo/bar]

設定訪問許可權按目錄結構進行設定,根結構寫為[/]

harry = rw

使用者名稱 = 讀寫許可權 r-讀 w-寫

@ harry_and_sally = rw

@使用者組名 = 讀寫許可權

* =

除上述設定外,其他使用者許可權為無

  • SVN本地匯入與匯出
  1. 匯入

使用匯入功能,可以快速為SVN倉庫新增資原始檔或目錄層次結構,對某個要匯入的資料夾執行如下右鍵功能

注意:匯入的資源僅包含指定目錄內的內容,不包含所選中目錄

  1. 匯出

SVN管理的檔案,每個目錄中都有一個隱含檔案,記錄了與SVN相關的資訊,匯出時,此類資料夾將被過濾掉,不跟隨匯出。對某個要匯出的SVN本地工廠執行如下右鍵功能

然後選擇匯出位置,此時儲存的目錄將不攜帶SVN管理目錄

  • SVN整合Eclipse

為Eclipse/MyEclipse新增SVN外掛支援,共分五個步驟

步驟一: 通過官網subclipse.tigris.org下載外掛檔案

eclipse_svn_site-1.6.5.zip           myeclipse-svn-site-1.6.16.zip

步驟二:解壓壓縮包中features與plugins資料夾,並複製到任意目錄X。注意目錄中不能包含有中文或空格字元。

步驟三:在Eclipse安裝目錄的dropins目錄下,建立文字檔案,檔名任意,副檔名為.link,錄入svn.link,並編輯內容如下:

path=X   注意:路徑中的分隔符使用\\

path=E:\\Eclipse\\myPlugin\\svn

步驟四:刪除Eclipse安裝目錄下的configuration\org.eclipse.update目錄,重新載入配置資訊

步驟五:啟動Eclipse,檢視中添加了SVN的管理檢視模式

SVN實用操作

       工程層次目錄

              repositoryName

                     trunk             用於儲存開發主線

                     branches        用於儲存支線副本

                     tags               用於儲存標籤副本

                  Subversion 提供了主線、分支管理技術,使得在軟體開發中可以更方便、靈活的對專案的進度、版本的釋出、版本的維護、軟體功能的拓展與定製進行管理。

主線(trunk):一個專案建立時就存在,並伴隨著專案的成長而不斷的成長,直到專案完全結束。

分支(branch):一般是指功能分支,例如:我們的某個專案要新增一個模組,但這個模組又比較複雜,實現難度比較大。為了不影響主線的穩定,我們就可以建立一個功能分支來專門開發這個模組,當這個模組開發完成以後,並通過測試部門的各項測試,再合併到主線中去。再比如,我們的交警 GPS 專案已經開發完成了,但是這個專案是給泉州交警做的,現在我們又接到了一個交警專案,不過是要給廈門交警大隊的。現在廈門交警大隊要求我們給他們定製一些功能。我們又不想再主線上進行修改,這個時候,我們也可以建立一個分支,並在這個分支上開發,這時是不會對主線造成影響的。等給廈門開發完成了以後,我們發現,他們要求的有些功能其實很好,以後別的地方可能也需要同樣的功能。這個時候我們就可以根據我們的需要,將有用的模組有選擇的合併到主線中來。

標籤(tag):標籤和分支一樣,也是一個目錄,不過這個目錄中一般存放的是釋出的資訊(當然我們也可以只用分支,但是用標籤更清楚明瞭一些)。還是拿我們的交警專案來舉個例子:我們的交警專案開發完成了以後,要拿給泉州交警大隊用了,也就是要釋出(release),假設這個版本叫做1.0.2。這個時候,我們就要建立一個標籤,當泉州交警大隊用了三個月,發現了一個 BUG,我們只需要簽出這個標籤中的程式碼(它和我們剛提供給泉州交警大隊時候的是一模一樣的),進行除錯,並修正這個 BUG。然後再發佈一個版本,假設叫做1.1.0,這個時候我們就在建立一個 1.1.0的標籤……

要注意,標籤目錄裡面的程式碼,要進行嚴格的控制,除了修正 BUG 外,不能做任何其他的事情。

共享工程

       檢出工程

       提交

       更新

       恢復刪除物理刪除

恢復歷史版本

歷史版本比對

       同步

       衝突

  • SVN伺服器整合

使用SVN進行版本控制需要基於SVN服務,實際開發中還存在另一種常見的服務提供方式,即將SVN部署到HTTP伺服器中,通過http協議訪問。由於SVN管理的僅僅是檔案,不存在動態資源,因此使用HTTP伺服器即可。

       一.Apache伺服器安裝與測試

  1. 下載Apache伺服器安裝客戶端

apache_2.2.14-win32-x86-no_ssl.msi

  1. 安裝Apache伺服器
  1. 安裝過程中會進行服務的註冊,連續彈出三次DOS提示框。
  1. 此時快捷工作列會新增Apache伺服器的圖示,預設為開啟狀態。
  1. 通過右鍵選單可以控制Apache伺服器。
  1. 控制視窗設定伺服器狀態。
  1. 通過瀏覽器訪問http://localhost,測試伺服器安裝是否成功。

二.Apache伺服器整合SVN,將SVN伺服器訪問許可權交由Apache管理控制

  1. 修改Apache配置檔案\conf\httpd.conf,開啟下列兩行配置(L:83 L:84)

LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so

注:上述配置中的檔案可以在Apache安裝目錄的modules目錄中查詢到

  1. 將下列兩行配置新增到上述內容後面

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

注:上述配置中的檔案有SVN提供,可以在SVN的安裝目錄中bin目錄中查詢到

  1. 將SVN目錄下bin目錄中上述兩個檔案拷貝到Apache安裝目錄的modules目錄中
  2. 使用Apache安裝目錄bin目錄中的htpasswd指令為Apache伺服器新增SVN訪問許可權

建立檔案,儲存使用者許可權,格式:htpasswd -cb [filename] [username] [password]

htpasswd -cb svn.pwd jock 123

新增使用者許可權到指定檔案,格式:htpasswd -b [filename] [username] [password]

htpasswd –b svn.pwd jockme 123

注:操作完成後,會生成svn.pwd檔案,該檔案可以使用任意名稱

  1. 將生成的密碼檔案svn.pwd移動到指定的SVN倉庫配置路徑conf目錄下,與之前的三個配置檔案同層

注:該檔案是使用MD5加密後的檔案,可以查閱,但不能修改,否則無法使用

    密碼檔案存放的位置不是SVN安裝路徑,是SVN倉庫路徑

  1. 在Apache伺服器中新增SVN配置

新增到Apache伺服器安裝路徑下的conf目錄中的httpd.conf檔案的最後,內容如下:

#配置虛擬目錄#

<location /svn/project>

#引用遠端訪問模組

DAV svn

#專案版本庫路徑#

SVNPath E:\repository\svn\it

#授權檔案#

AuthzSVNAccessFile E:\repository\svn\it\conf\authz

#所有使用者都需要身份驗證#

Satisfy Any

Require valid-user

#驗證方式#

AuthType Basic

#專案的名稱#

AuthName "project"

#使用者檔案#

AuthUserFile E:\repository\svn\it\conf\svn.pwd

</location>

說明:

<location /svn/project>

通過該路徑訪問SVN倉庫,根據需要進行修改

SVNPath E:\repository\svn\it

SVN倉庫路徑,即儲存SVN版本檔案的目錄路徑

AuthzSVNAccessFile E:\repository\svn\it\conf\authz

SVN訪問授權檔案

AuthUserFile E:\repository\svn\it\conf\svn.pwd

Apache整合SVN專用授權使用者檔案

  1. 重啟伺服器,通過Apache伺服器訪問SVN版本管理

http://localhost/svn/project

三.使用Apache伺服器整合SVN倉庫

              通過TortoiseSVN訪問Apache伺服器

              通過MyEclipse訪問Apache伺服器

  • CVS簡介(瞭解)

安裝

配置

登入

       set cvsroot=:pserver:[email protected]/project

       cvs login

新增使用者

       cvs passwd -a jockme

       cvs passwd -a zhangsan

       cvs passwd -a lisi

       cvs passwd -a -r jock zhangsan

cvs passwd -a -r jockme lisi

MyEclipse使用CVS