SVN在Windows下安裝

來源:互聯網
上載者:User

SVN在Windows下安裝 一、準備工作:
1、 Http伺服器:apache2.X  官方網站為http://httpd.apache.org/
2、 Svn:官方網站為http://subversion.tigris.org/
3、 用戶端程式(可選):TortoiseSVN(如果想用此工具建庫,要注意版本應該是SVN伺服器支援的版本)

二、安裝:
1、 apache伺服器正常安裝即可,如果80連接埠正在使用,為避免安裝時出現連接埠衝突,可暫時停止80連接埠對應的服務(如:IIS)。安裝完成可以通過修改apache的httpd.conf中的listener來更改apache的連接埠。
2、 SVN:安裝簡單一路next即可。
3、  用戶端程式(可選):TortoiseSVN,一路next,安裝完要重啟。

三、配置:
1、首先將Subversion安裝目錄bin\下面的兩個檔案:mod_authz_svn.so和mod_dav_svn.so複製到Apache安裝目錄modules\目錄下; 再將Subversion安裝目錄bin\下面的所有.dll檔案複製到Apache安裝目錄bin\目錄下。
2、 需要再修改httpd.conf,並做如下修改:
找到Apache安裝目錄下的conf目錄,用文字編輯器開啟httpd.conf,找到一下兩行:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so

將每行前面的注釋符“#”去掉。再在所有LoadModule語句的最後添加一下幾行:

#SVN
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
3、 建立一個SVN存放檔案的目錄,例如:D:\svnrepo。
4、 告訴Apache我們的資產庫所在的路徑,可以通過Location指令來完成這個設定。因為不希望為每個單獨的項目都進行單獨的設定,所以我們把所有項目都存放在統一的資產庫目錄,那麼可以使用SVNParentPath指令來指定存放所有項目的路徑。在httpd.conf檔案最後添加下面配置:  
#SVN
<Location /svn/>
    DAV svn
    SVNListParentPath on
    SVNParentPath "D:/svnrepo"
    #SVNPath "D:/svnrepo/test"
 
    ####################認證的類型
    AuthType Basic
    #################### 認證的名稱,顯示於登入提示框
    AuthName "Subversion 資產庫,請登入 !"
    ####################Which password file to use for authentication 儲存使用者登入資訊的檔案
    AuthUserFile D:\svnrepo\passwd
    #################### 限定各個使用者或組在版本庫中目錄的存取權限
    AuthzSVNAccessFile D:\svnrepo\svnaccessfile
    #################### 讓所有使用者對版本庫都有讀的許可權而只有特定的使用者才有寫的許可權
    Require valid-user
</Location>

四、添加使用者:
開啟命令列工具(cmd.exe),轉到apache的bin目錄下,參考以下命令添加使用者。
說明:建立使用者 zj
輸入:htpasswd –c D:\svnrepo\passwd zj
說明:使用-c參數來建立一個passwd檔案
輸出:
New password: *****
Re-type new password: *****
Adding password for user zj
再建立使用者的時候就不用-c參數,而是用-m參數,因為檔案passwd 已經建立。
五、建立svn資產庫:
用 TortoiseSVN在D:/svnrepo下建立test資產庫,此處注意我遇到的一個問題:如果TortoiseSVN的版本過高,而SVN伺服器的版本過低有可能造成,建立的資產庫無法訪問(SVN Could not open the requested SVN filesystem)。因此版本要相符。
當然為避免上面的問題也可以直接用命令來建立,在命令列視窗,轉到svn的bin下,
svnadmin create d:\svnrepo\repository
六、配置存取權限:
在d:\svnrepo下建立一個名為 svnaccessfile 的檔案,編寫內容如下:
[groups]
admin = zm
team1 = dev1,dev2

# 為所有庫指定預設訪問規則
# 所有人可以讀,管理員可以寫,危險分子沒有任何許可權,[/]代表根目錄
[/]
* = r
@admin = rw
dangerman =

# 允許開發人員可以完全訪問他們的項目版本庫
[test:/]
@team1 = rw

 

配置SVN伺服器
開啟每個svn倉庫的/conf/目錄,開啟svnserve.conf找到一下兩句:

# [general]

# anon-access = none

# auth-access = write
# password-db = passwd

去之每行開頭的#,anon-access = none 是匿名使用者不能訪問,必須要有使用者名稱和密碼。(注意:問題就出在這,一定要注意格式去掉注釋後要頂格不能有空)

其中第二行是指定身分識別驗證的檔案名稱,即passwd檔案
同樣開啟passwd檔案,將

# [users]
# harry = harryssecret
# sally = sallyssecret

        這幾行的開頭#字元去掉,這是設定使用者,一行一個,儲存格式為“使用者名稱 = 密碼”,如可插入一行:admin = admin888,即為系統添加一個使用者名稱為admin,密碼為admin888的使用者

配置authz檔案

基於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  

七、測試
重啟apache,在IE裡訪問http://localhost:連接埠/svn/
看到建立的test資產庫進行許可權測試OK。如果出現無法訪問錯誤,仔細檢查一下,apache的conf檔案裡的location設定的路徑後面是還少了/ ,或者NTFS目錄許可權的問題。

運行SVN伺服器
運行SVN服務
在命令列執行

svnserve --daemon --root F:\lava\svn
服務啟動,--daemon可簡寫為-d,--root可簡寫為-r,可以建立一個批次檔並放在windows啟動組中便於開機就運行SVN服務(注意:這是臨時開啟的服務,命令執行後不能關閉視窗),或者在這個地址http://clanlib.org/~mbn/svnservice/下載那個svnservice.exe檔案,拷貝到E:\svn\bin目錄下,再從命令列下執行:

svnservice -install --daemon --root "E:\svn\Repository"
sc config svnservice start= auto
net start svnservice

用後台服務的方式可以設定開機自動執行。

D:\Program Files\Subversion\bin>sc create svnservice binpath= "d:\Program Files\

Subversion\bin\svnserve.exe --service -r F:\SVN"

就可以用net svnservice stop 或者start來啟動服務了 也可以在Sevices.msc來啟動了。

 

添加為系統服務
方法1(推薦):
在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 Server)本身包含了一個安裝服務的工具,叫做"Service Control",也就是sc.exe。
1.安裝為服務:
例:我的Subversion安裝在"D:\program files\Subversion",版本庫在"D:\svn_root",而我希望對應的Subversion服務名為svnservice,安裝這個svn服務的命令就可以這樣寫:
sc create svnservice
binpath= "D:\ Program Files\Subversion\bin\svnserve.exe --service -r D:\svn_root"
displayname= "SVNService"
depend= Tcpip
請注意,因為便於察看,上面的命令分為多行,但在實際執行時應該在一行裡。另外,在以前啟動svnserve時會使用"-d"選項,也就是守護進程模式,在這裡不能使用,會導致服務無法啟動。同樣,"-i"和"-t"選項也不能使用。
另外還有兩點需要小心處理。首先,如果路徑中包括空格,一定要用“\”處理“"”號,例如上面的例子中如果svnserve.exe在“c:\ program files\subversion\”中,則命令應該寫為“binpath= "\"c:\program files\subversion\bin\svnserve.exe\"”(“”中的內容),整個命令如下,紅色部分是改變部分:
sc create svnservice
binpath= "\"D:\ Program Files\Subversion\bin\svnserve.exe\" --service -r D:\svnroot"
displayname= "SVNService"
depend= Tcpip
其次,sc對選項的格式還有要求,例如“depend= Tcpip”不能寫為“depend = Tcpip”或“depend=Tcpip”,也就是“=”前不能有空各,而後面必須有空格。
2.啟動服務
在命令列視窗執行完這個命令之後,服務還沒有啟動,你可以繼續運行"net start svnservice"啟動這個服務。
3.停止服務
然後使用"net stop svnservice"停止服務。
4.刪除服務
如果服務安裝的有問題,你可能需要刪除服務。要刪除前面添加的服務,只需要運行"sc delete svnservice","svnservice"就是我們建立服務時使用的名字。
5.佈建服務是自動啟動
預設情況下安裝的服務不會隨Windows的啟動而啟動,為了使svn服務能夠隨Windows啟動而啟動,需要修改一下"sc create"命令(首先要刪除),增加"start= auto"選項:
sc create svnservice
binpath= "D:\ Program Files\Subversion\bin\svnserve.exe --service -r D:\svn_root"
displayname= "SVNService"
depend= Tcpip
start= auto
當然你也可以使用圖形化的工具修改服務的屬性,你可以在“開始->運行...”中執行"services.msc",然後在介面中修改。
方法2:
建立一個批次檔並放在windows啟動組中便於開機就運行SVN服務。
方法3:
這個地址http://clanlib.org/~mbn/svnservice/下載那個svnservice.exe檔案,拷貝到E:\svn\bin目錄下,再從命令列下執行:
svnservice --install --daemon --root "E:\svn\Repository"
sc config svnservice start= auto
net start svnservice
此檔案會將SVN變成windows系統的一個服務,並預設為自啟動,注意:執行第三句時確保前面以命令列方式啟動並執行SVN服務已經停止,如果沒停止可在其視窗中按Ctrl+C中止運行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.