windows系統使我們經常使用的操作系統怎么才能使用我們現在經常使用的操作系統不變的情況下繼續我們的SVN之旅,我們在綜合了好動種方法的同時感覺這些內容非常貼近我們SVN在Windows種的應用與配置.
1.下載文件,
下載最新版本subversion,我這里選擇svn-1.4.5-setup.exe
下載 "Subversion Windows Service" 軟件包
下載 TortoiseSVN shell integration utility
2.安裝Subversion 服務器
由于我下載的是setup.exe版本,安裝程序安裝后會自動設置系統變量.如果你下載的是zip版就需要手動設置系統變量.
setup.exe版直接安裝就可以了.安裝到D:/Program Files/Subversion
首先創建SVN儲存庫(repository)
svnadmin create F:/svn/
repository創建完畢后會在目錄下生成若干個文件和文件夾,dav目錄是提供給Apache與mod_dav_svn使用的目錄,讓它們存儲內部數據;db目錄就是所有版本控制的數據文件;hooks目錄放置hook腳本文件的目錄;locks用來放置Subversion文件庫鎖定數據的目錄,用來追蹤存取文件庫的客戶端;format文件是一個文本文件,里面只放了一個整數,表示當前文件庫配置的版本號;
3.配置SVN服務器
(這個位置就是在你建儲存庫的地方F:/svn)
打開/conf/目錄,打開svnserve.conf找到一下兩句:
# [general]
# password-db = passwd
# anon-access = none
# auth-access = write
去之每行開頭的#,其中第二行是指定身份驗證的文件名,即passwd文件.anon-access = none 是匿名用戶不能訪問,必須要有用戶名和密碼。(注意:問題就出在這,一定要注意格式去掉注釋后要頂格不能有空)
同樣打開passwd文件,將
# [users]
# harry = harryssecret
# sally = sallyssecret
格式為“用戶名 = 密碼”,如可插入一行:admin = admin888,即為系統添加一個用戶名為admin,密碼為admin888的用戶
4.運行SVN服務器
運行SVN服務
在命令行執行
svnserve --daemon --root F:/svn
服務啟動,--daemon可簡寫為-d,--root可簡寫為-r,可以建立一個批處理文件并放在windows啟動組中便于開機就運行SVN服務(注意:這是臨時打開的服務,命令執行后不能關閉窗口)
也可以制定subversion工作的端口:svnserve -d -r f:/svn --listen-port 9999
用后臺服務的方式可以設置開機自動執行。
D:/Program Files/Subversion/bin>sc create svnservice binpath= "C:/Program Files/Subversion/bin/svnserve.exe --service -r f:/svn --listen-port 9999"
就可以用net svnservice stop 或者start來啟動服務了 也可以在Sevices.msc來啟動了。
5、用客戶端訪問
格式:svn://服務器IP
---------------------------------------------------------------------------------------------------------
基于svnserve的服務器,權限文件authz配置的常見問題及解答
最近在我用Subversion論壇(http://www.iUseSVN.com/bbs)經常有人提到這樣的問題:
為什么我的客戶端沒有寫權限?
為什么我的權限沒有起作用?
總結他們的配置,發現
都是用svnserve作為服務器,
都在svnserve.conf中使用了authz-db選項
原因可能如下:
1,配置authz時,沒有注意svnserve啟動參數-r所指定的目錄。
這里有兩種情況:
A:-r直接指定到版本庫(稱之為單庫svnserve方式)
比如,有一個庫project1,位于D:/svn/project1
使用以下命令啟動svnserve
[Copy to clipboard] [ - ]CODE:
svnserve -d -r D:/svn/project1
在這種情況下,一個svnserve只能為一個版本庫工作
authz文件如果配置成下面這樣就是錯的,
[Copy to clipboard] [ - ]CODE:
[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
應該配置成
[Copy to clipboard] [ - ]CODE:
[groups]
admin=user1
dev=user2
[/]
@admin=rw
@doc=r
因為[project1:/]表示庫project1的根目錄,而按上面的啟動參數,是沒有庫的概念的。
使用類似這樣的URL:svn://192.168.0.1/ 即可訪問project1
B:-r指定到版本庫的上級目錄(稱之為多庫svnserve方式)
同樣,有一個庫project1,位于D:/svn/project1
如果使用以下命令啟動svnserve
[Copy to clipboard] [ - ]CODE:
svnserve -d -r D:/svn
這種情況,一個svnserve可以為多個版本庫工作,
這時如果想限制指定庫的指定目錄,就應該指定具體的庫,像這樣
[Copy to clipboard] [ - ]CODE:
[groups]
admin=user1
dev=user2
[project1:/]
@admin=rw
@doc=r
如果此時你還用[/],則表示所有庫的根目錄,同理,[/src]表示所有庫的根目錄下的src目錄
使用類似這樣的URL:svn://192.168.0.1/project1 即可訪問project1
這樣的URL:svn://192.168.0.1/project2 即可訪問project2
2,對中文目錄進行權限控制時,沒有將權限文件authz改為utf-8格式。
svn對于非英文文件名和目錄名使用utf-8格式編碼處理,要對中文目錄進行正確控制,
應該使用無BOM的utf-8格式,如何將默認的文件轉為utf-8,
我使用的是UltraEdit的菜單"ASCII to UTF-8 (Unicode Editing)"。在UltraEdit的配置中,可以設置有無BOM