1.安裝svn-1.4.4-setup.exe
2.建立一個目錄作為版本倉庫:如c:\snv
3.對版本倉庫目錄進行初始化:svnadmin create c:\svn
4.啟動版本伺服器:svnserve -d -r c:\svn
5.将檔案夾導入到版本倉庫中去(d:\test 目錄中):svn import svn://localhost
需要建立環境變量:SVN_EDITOR notepad
或者svn import svn://localhost -f -c:\log.log 日志檔案
6.認證失敗?
在c:\svn\conf\svnserve.conf 修改配置(預設是匿名使用者隻有read)
anon-access = read 下面加入一行
anon-access = write
ok了 重新開機服務 再次送出ok
7.我們在版本倉庫中建立一個虛拟目錄project2
svn mkdir svn://localhost/project2
8.我們再次送出一個檔案夾放置在版本服務的虛拟目錄project2中(d:\test2 目錄中 包含test。txt)
svn import svn://localhost/project2
9.從svn中檢出project2(d:\checkout 中)
svn checkout svn://localhost/project2
10.修改test.txt内容 并送出:svn commit test.txt
11.如果檔案鎖定 可以用 svn cleanup 指令解鎖
12.删除test.txt 通過update指令重新擷取:svn update test.txt
svn 權限
13.我們希望可以掌控svn的權限
anon-access = read
anon-access = write
注釋掉。這樣就不可以匿名修改了,不過還是可以匿名檢出。因為svn預設是允許匿名檢出的
我們新增一個anon-access = none 這樣匿名檢出也禁止了
14.我們添加認證使用者
将password-db = passwd 的注釋取消
打開conf下的passwd檔案
[users]
# harry = harryssecret
# sally = sallyssecret
按此格式分别鍵入使用者 = 密碼即可
svn+apache
svn的權限确實不敢恭維,現在我們将svn和apache進行整合
分别下載下傳svn對應的apache版本
1.apache的安裝 一路next即可
2.将svn安裝目錄bin下的mod_dav_svn.so,mod_authz_svn.so檔案 複制到apache目錄下的modules下
修改httpd.conf檔案,我這裡是145,146行的注釋去掉
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
3.在173行增加我們複制的檔案載入
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
4.在檔案結尾增加我們的目錄映射
<Location /svn>
DAV svn
SVNPath c:/svn
</Location>
5.重新開機apache 我們就可以通過:http://localhost/svn 浏覽通路版本庫了(不過沒有任何限制)
6.我們需要在<Location /svn></Location>配置驗證資訊
<Location /svn>
DAV svn
SVNPath c:/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile c:/passwords
Require valid-user
</Location>
AuthType表示驗證類型,這裡我們采用BASIC即基本方式,也是最常用的驗證方式。
AuthName表示出現登入對話框時,視窗的标題名。
AuthUserFile表示使用者登入資訊的存放檔案,這裡我們将該檔案儲存為E:/passwd/passwords,目前該檔案還不存在,不過不要着急,我們稍後就會建立該檔案。
Require valid-user 表示隻有認證的使用者才能通路,否則匿名使用者也可以通路。
7.我們建立登陸資訊檔案
apache bin目錄下的工具 htpasswd.exe
建立檔案 并建立一個使用者
htpasswd –c c:\passwords user1
會讓你輸入密碼 采用的md5加密
htpasswd c:\passwords user2
密碼采用明文
htpasswd -p c:\passwords user3
8.重新開機apache服務,我們通路和浏覽需要輸入使用者和密碼了
也可以使用svn工具進行管理 不過協定變成http了而不是svn了
9.多版本庫管理,我們将之前的 SVNPath c:/svn 修改為 SVNParentPath c:\svn
更改後已經無法浏覽倉庫内容了,
這是因為之前建立的倉庫都是以svn為根路徑的,是以一旦将它改成ParentPath後就無法正常通路了。
實際應用中,我們要import一個項目到SVN上,一般都不會import到根目錄中,而是import到項目特定的目錄中,
這樣當從SVN中檢出時我們也隻會檢出特定的項目,而不是将SVN中所有的項目全部檢出來,因為倉庫中可能有很多個其他項目。
10.我們在svn目錄下建立兩個目錄myproject1。myproject2
svnadmin create c:/svn/myproject1
svnadmin create c:/svn/myproject2
采用SVNParentPath方式,建立倉庫時也并不需要重新開機Apache伺服器,
因為SVNParentPath指定的路徑就是倉庫的父目錄,我們可以通過浏覽器檢視剛才import的項目。
這裡注意位址:http://localhost/svn/project1,如果輸入http://localhost/svn,則無權限通路,因為預設情況下我們隻能通路其中的子倉庫。
11.如何允許匿名使用者讀取
httpd.conf中的Require valid-user改為如下:
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
12.我們需要更細緻的權限設定,
SVN倉庫中有很多的子倉庫,每個子倉庫中又有很多目錄和檔案,那麼我需要配置以便使某些使用者可以通路某些倉庫,
即可以讀寫;而另外一些使用者隻能讀不能寫,不過這兩種類型的使用者都需要輸入認證資訊方能進行操作
将httpd.conf内容修改為
<Location /svn>
DAV svn
SVNParentPath C:\svn
AuthzSVNAccessFile C:/policy
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile C:/passwords
Require valid-user
</Location>
policy檔案内容為權限資訊 如下
[project1:/]
user1=rw
user2=r
user3=
對于project1路徑,user1使用者可讀可寫,而user2使用者隻讀,另外的使用者user3不能讀也不能寫。這就定義了SVN倉庫的通路政策。
這裡也可以通過分組進行定義 如下
[groups]
developers=user1,user2
testers=user3
[project1:/]
@developers=rw
@testers=
[project2:/]
@developers=rw
@testers=rw
13.備份版本庫
svnadmin hotcopy C:\svn E:\backup