天天看點

如何搭建本地SVN服務

搭建svn服務的方法步驟問題,主要有七個部分 。下面是具體的步驟介紹。

一、準備工作

1、擷取s version伺服器程式

到官方網站(http://s version.tigris.org/)下載下傳最新的伺服器安裝程式。目前最新的是1.5版本,具體下載下傳位址 在:http://s version.tigris.org/servlets /projectdocumentlist?folderid=8100&expandfolder=8100&folderid=91

2、擷取tortoisesvn用戶端程式

從官方網站http://tortoisesvn.net/downloads擷取最新的tortoisesvn。tortoisesvn是一個用戶端程 序,用來與s vers伺服器端通訊。s version自帶一個用戶端程式svn.exe,但tortoisesvn更好操作,提高效率。

二、安裝伺服器端和用戶端 

搭建svn服務第二步要安裝伺服器端和用戶端。安裝s version(以下簡稱svn)的伺服器端和用戶端。下載下傳下來的伺服器端是個zip壓縮包,直 接解壓縮即可,比如我解壓到e:\s version。用戶端安裝檔案是個exe可執行檔案,直接運作按提示安裝即可,用戶端安裝完成後提示重新開機。

三、建立版本庫(repository) 

運作s version伺服器需要首先要建立一個版本庫(repository)。版本庫可以看作是伺服器上集中存放和管理資料的地方。開始建立版本 庫。首先建立e:\svn空檔案夾作為所有版本庫的根目錄。然後,進入指令行并切換到s version的bin目錄。輸入如下命 令:svnadmincreatee:\svn\repos1此指令在e:\svn下建立一個版本庫repos1。repos1下面會自動生成一些檔案夾 和檔案。我們也可以使用tortoisesvn圖形化的完成這一步:先建立空目錄e:\svn\repos1,注意一定是要空的。然後在repos1檔案

夾上“右鍵->tortoisesvn->createrepositoryhere...”,然後可以選擇版本庫模式,這裡使用預設的 fsfs即可,然後就建立了一系列檔案夾和檔案,同指令行建立的一樣。

四、運作獨立伺服器 

搭建svn服務過程中要運作獨立伺服器。 此時s version服務還沒有開始,隻是通過它的指令建立了 版本庫。繼續在剛才的指令視窗輸入:svnserve.exe--daemon

svnserve将會在端口3690等待請求,--daemon(兩個短橫線)選項告訴svnserve以守護程序方式運作,這樣在手動終止之前不會退 出。注意不要關閉指令行視窗,關閉視窗會把svnserve停止。為了驗證svnserve正常工作,使用tortoisesvn->repo- browser來檢視版本庫。在彈出的url對話框中輸入:svn://localhost/svn/repos1

點ok按鈕後就可以看見repos1版本庫的目錄樹結構了,隻不過這時repos1是個空庫。你也可以使用--root選項設定根位置來限制伺服器的通路 目錄,進而增加安全性和節約輸入svnserveurl的時間:svnserve.exe--daemon--rootdrive:\path\to \repository以前面的測試作為例,svnserve将會運作為:svnserve.exe--daemon--roote:\svn然後

tortoisesvn中的版本庫浏覽器url縮減為:svn://localhost/repos1

五、配置使用者和權限 

用文本編輯器打開e:\svn\repos1\conf目錄,修改svnserve.conf:将:#password-db=passwd改 為:password-db=passwd

即去掉前面的#注釋符,注意前面不能有空格。然後修改同目錄的passwd檔案,增加一個帳号:将:

[users]

#harry=harryssecret

#sally=sallyssecret

增加帳号:

test=test

六、初始化導入 

下面就是搭建svn服務時将我們的資料(項目)導入到這個版本庫,以後就由版本庫管理我們的資料。我們的任何改動都回被版本庫記錄下來,甚至我們自己丢 失、改錯資料時版本庫也能幫我們找回資料。

比如,我在d:\wwwroot下有個gstbook檔案夾,裡面存放的是我編寫的留言簿程式。在此檔案夾上“右鍵 ->tortoisesvn->import...”,在彈出對話框的“urlofrepository”輸入 “svn://localhost/repos1/gstbook”。在“importmessage”輸入“導入整個留言簿”作為注釋。

點ok後要求輸入帳号。我們在使用者名和密碼處都輸入test。完成後gstbook中的内容全部導入到了svn://localhost/svn /repos1/gstbook。

我們看到在e:\svn\repos1沒有任何變化,連個gstbook檔案夾都沒有建立,唯一的變化就是e:\svn\repos1容量變大了。實 際上我們源gstbook中的内容已經導入repos1版本庫了,源gstbook檔案夾可以删除了。需要注意的是,這一步操作可以完全在另一台 安裝了tortoisesvn的客戶機上進行。例如運作svnserve的主機的ip是133.96.121.22,則url部分輸入的内容就是

“svn://133.96.121.22”。

七、基本操作流程

1、取出(checkout)

取出版本庫到一個工作拷貝:

來到任意空目錄下,比如在f分區建立一個空檔案夾f:\work。“右鍵->svncheckout”。在“urlofrepository”中輸 入“svn://localhost/svn/repos1/gstbook”,這樣我們就得到了一份gstbook中内容的工作拷貝。

2、存入(checkin)/送出(commit)

在工作拷貝中作出修改并送出:

在gstbook工作拷貝中随便打開一個檔案,作出修改,然後“右鍵->svncommit...”。這樣我們就把修改送出到了版本庫,版本庫 根據情況存儲我們送出的資料。

在修改過的檔案上“右鍵->tortoisesvn->showlog”,可以看到對這個檔案所有的送出。在不同的revision條目上 “右鍵->comparewithworkingcopy”,我們可以比較工作拷貝的檔案和所選revision版本的差別。本節介紹搭建svn服 務完畢,請關注本節其他相關報道。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 搭建好svn後建立svn版本

1、建立一個空檔案夾,右鍵->tortoisesvn->createrepositoryhere,然後該檔案夾會自動生成一些檔案出來

2、用文本編輯器打開e:\svn\repos1\conf目錄,修改svnserve.conf:将:#password-db=passwd改 為:password-db=passwd

即去掉前面的#注釋符

3、修改同目錄的passwd檔案,增加一個帳号

amylv=amylv

4、初始化導入 比如在d:\wwwroot下有個gstbook檔案夾,在此檔案夾上“右鍵 ->tortoisesvn->import...”,

輸入你的使用者名跟密碼

到此ok了

附:svn伺服器端隻能裝在c盤下 svnserve.exe --daemon 這個指令才能使用,版本庫也必須放在c盤下svn://localhost 對應的是c盤直接目錄

如果你建立的檔案夾目錄為 c:/svnlib/weibo。那麼import的位址為svn://localhost/svnlib/weibo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

安裝了兩次終于明白應該注意什麼了,總結一個最簡單的說明,節省大家時間

1、擷取svn程式

2、安裝 s version(以下簡稱svn)的伺服器端和用戶端。下載下傳下來的伺服器端是個 zip壓縮包,直接解壓縮即可,比如我解壓到 e:\s version 。用戶端安裝檔案是個 exe 可執行檔案,直接運作按提示安裝即可,用戶端安裝完成後提示重新開機。

3、先建立空目錄 e:\svn\repos1 ,注意一定是要空的。然後在 repos1 檔案夾上“右鍵->tortoisesvn->create repository here...”,然後可以選擇版本庫模式,這裡使用預設的fsfs即可,然後就建立了一系列檔案夾和檔案,同指令行建立的一樣。

(這一步注意svn服務端要和庫目錄在同一個盤符下面,否則提示找不到目錄)

4、進入指令行并切換到s version的bin目錄。輸入如下指令:

svnserve.exe --daemon

svnserve 将會在端口 3690 等待請求,--daemon(兩個短橫線)選項告訴 svnserve 以守護程序方式運作,這樣在手動終止之前不會退出。注意不要關閉指令行視窗,關閉視窗會把 svnserve 停止

5、配置使用者和權限

用文本編輯器打開e:\svn\repos1\conf目錄,修改svnserve.conf:

将:

# password-db = passwd 

改為:

password-db = passwd

即去掉前面的 # 注釋符,注意前面不能有空格。

然後修改同目錄的passwd檔案,增加一個帳号:

# harry = harryssecret

# sally = sallyssecret

[users] 

#harry = harryssecret 

#sally = sallyssecret 

test = test

6、初始化導入

(在做這一步之前一定要執行第5步)

下面就是将我們的資料(項目)導入到這個版本庫,以後就由版本庫管理我們的資料。我們的任何改動都回被版本庫記錄下來,甚至我們自己丢失、改錯資料時版本庫也能幫我們找回資料。

比如,我在 d:\wwwroot 下有個 gstbook 檔案夾,裡面存放的是我編寫的留言簿程式。在此檔案夾上“右鍵 -> tortoisesvn -> import...” ,在彈出對話框的“url of repository”輸入“svn://localhost/repos1/gstbook”。在“import message”輸入“導入整個留言簿”作為注釋。

點 ok 後要求輸入帳号。我們在使用者名和密碼處都輸入 test 。完成後 gstbook 中的内容全部導入到了 svn://localhost/svn/repo1/gstbook 。

我們看到在 e:\svn\repo1 沒有任何變化,連個 gstbook 檔案夾都沒有建立,唯一的變化就是e:\svn\repo1容量變大了。實際上我們源gstbook中的内容已經導入 repo1 版本庫了,源 gstbook 檔案夾可以删除了。

7、svn配置結束,這是最簡單的步驟,已經可以用了,然後把svn整合到系統服務,以後就不用一直開着指令視窗了。把以下内容粘貼到文本檔案,然後重命名檔案為:*.bat執行就好了,

sc create svnserver binpath= "c:\program files\s version\bin\svnserve.exe --service --root f:\svn" displayname= "svnserver" depend= tcpip start= auto obj= "nt authority\networkservice"

其中c:\program files\s version\bin\svnserve.exe 為svn的路徑

f:\svn 為版本庫的目錄

displayname= "svnserver" 為設定服務的名字

--root 是設定根目錄 比如:原來你通路為:svn://localhost/svn 

設定--root f:\svn之後縮寫為svn://localhost 這個一定要注意,否則error: url 'svn://localhost/svn'doesn't exist

8、svn能用了,下面是原始資料,稍微整理了一下,如果以上内容不能滿足,參考以下内容,希望沒有浪費寶貴時間。如果希望網站同步更新,使用了鈎子程式,也在下面内容。

s vision svn (svn的伺服器端)安裝教程:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1、擷取 s version 伺服器程式

到官方網站(http://s version.tigris.org/)下載下傳最新的伺服器安裝程式。目前最新的是1.4.6版本,具體下載下傳位址在:http://s version.tigris.org/ser ... 100&folderid=91 ,注意找for apache 2.2.x 版本的。

2、擷取 tortoisesvn 用戶端程式

從官方網站 http://tortoisesvn.net/downloads 擷取最新的tortoisesvn 。tortoisesvn 是一個用戶端程式,用來與 s version 伺服器端通訊。s version 自帶一個用戶端程式 svn.exe ,但 tortoisesvn 更好操作,提高效率。

二、安裝伺服器端和用戶端

首先安裝 apache 2.2.6 ,具體安裝方法大家參考相關資料,或者參看我寫的《windows下安裝apache 2.2.x》。

其次安裝 s version(以下簡稱svn)的伺服器端和用戶端。下載下傳下來的伺服器端是個 zip壓縮包,直接解壓縮即可,比如我解壓到 e:\s version 。用戶端安裝檔案是個 exe 可執行檔案,直接運作按提示安裝即可,用戶端安裝完成後提示重新開機。

三、建立版本庫(repository)

運作s version伺服器需要首先要建立一個版本庫(repository)。版本庫可以看作是伺服器上集中存放和管理資料的地方。

開始建立版本庫。首先建立 e:\svn 空檔案夾作為所有版本庫的根目錄。然後,進入指令行并切換到s version的bin目錄。輸入如下指令:

svnadmin create e:\svn\repos1

此指令在 e:\svn 下建立一個版本庫 repos1 。repos1 下面會自動生成一些檔案夾和檔案。

我們也可以使用 tortoisesvn 圖形化的完成這一步:

先建立空目錄 e:\svn\repos1 ,注意一定是要空的。然後在 repos1 檔案夾上“右鍵->tortoisesvn->create repository here...”,然後可以選擇版本庫模式,這裡使用預設的fsfs即可,然後就建立了一系列檔案夾和檔案,同指令行建立的一樣。

四、運作獨立伺服器

此時 s version 服務還沒有開始,隻是通過它的指令建立了版本庫。繼續在剛才的指令視窗輸入:

svnserve.exe –daemon

svnserve 将會在端口 3690 等待請求,--daemon(兩個短橫線)選項告訴 svnserve 以守護程序方式運作,這樣在手動終止之前不會退出。注意不要關閉指令行視窗,關閉視窗會把 svnserve 停止。

為了驗證svnserve正常工作,使用tortoisesvn -> repo-browser 來檢視版本庫。在彈出的 url 對話框中輸入:

svn://localhost/svn/repo1

點 ok 按鈕後就可以看見 repo1 版本庫的目錄樹結構了,隻不過這時 repo1 是個空庫。

你也可以使用--root選項設定根位置來限制伺服器的通路目錄,進而增加安全性和節約輸入svnserve url的時間:

svnserve.exe --daemon --root drive:\path\to\repository

以前面的測試作為例,svnserve将會運作為:

svnserve.exe --daemon --root e:\svn

然後tortoisesvn中的版本庫浏覽器url縮減為:

svn://localhost/repo1

五、配置使用者和權限

# password-db = passwd

六、初始化導入

需要注意的是,這一步操作可以完全在另一台安裝了 tortoisesvn 的客戶機上進行。例如運作svnserve的主機的ip是133.96.121.22,則url部分輸入的内容就是“svn://133.96.121.22” 。

1、取出(check out)

來到任意空目錄下,比如在f分區建立一個空檔案夾 f:\work 。“右鍵 -> svn checkout”。在“url of repository”中輸入“svn://localhost/svn/repo1/gstbook”,這樣我們就得到了一份 gstbook 中内容的工作拷貝。

2、存入(check in)/送出(commit)

在 gstbook 工作拷貝中随便打開一個檔案,作出修改,然後“右鍵 -> svn commit... ”。這樣我們就把修改送出到了版本庫,版本庫根據情況存儲我們送出的資料。

在修改過的檔案上“右鍵 -> tortoisesvn -> show log” ,可以看到對這個檔案所有的送出。在不同的 revision 條目上“右鍵 -> compare with working copy”,我們可以比較工作拷貝的檔案和所選 revision 版本的差別。

安裝 apachesvn 伺服器教程:

s version的設計包括一個抽象的網絡層,這意味着版本庫可以通過各種伺服器程序通路。理論上講,s version可以使用無限數量的網絡協定實作,目前實踐中存在着兩種伺服器。

? svnserver:svnserve是一個小的(也叫輕型的)、獨立伺服器,使用自己定義的協定和用戶端。(作者注:以下稱這種伺服器為“svnserver伺服器”,上面的安裝配置就是安裝svnserver伺服器。)

? apachesvn:apache是最流行的web伺服器,通過使用mod_dav_svn子產品,apache可以通路版本庫,并且可以使用戶端使用http的擴充協定webdav/deltav進行通路。(作者注:以下稱這種伺服器為“apachesvn伺服器”)

通過 http 協定通路版本庫是 s version 的亮點之一。apachesvn伺服器具備了許多svnserve伺服器沒有的特性,使用上更加靈活,但是有一點難于配置,靈活通常會帶來複雜性。

由于 s version 需要版本化的控制,是以标準的 http 協定不能滿足需求。要讓 apache 與 s version 協同工作,需要使用 webdav(web-based distributed authoring and versioning:)web 分布式創作和版本控制)。webdav 是 http 1.1 的擴充,關于

webdav 的規範和工作原理,可以參考 ietf rfc 2518 (http://www.ietf.org/rfc/rfc2518.txt)。

一、必備條件

為了讓你的版本庫使用http網絡,你必需具備以下幾個條件:

1、配置好httpd 2.2.x,并且使用mod_dav啟動。

2、為mod_dav安裝mod_dav_svn插件。

3、配置你的httpd.conf,使http協定能通路版本庫。

下面以我的配置過程詳細講解。

環境:

os:windows xp sp2

web:apache 2.2.6 

svn:svn-win32-1.4.6

二、安裝

1、安裝apache

具體安裝方法見:《windows下安裝apache 2.2.x》

2、安裝 s version

将下載下傳下來的 svn-win32-1.4.6.zip 直接解壓即可,比如我解壓到 e:\s version 。

從s version安裝目錄的 bin 子目錄将 intl3_svn.dll、libdb44.dll、mod_authz_svn.so、mod_dav_svn.so 拷貝到apache的子產品目錄(apache 安裝目錄的 modules 檔案夾)。

三、基本的apache配置

修改apache的配置檔案 httpd.conf ,使用loadmodule來加載mod_dav_svn子產品。

#loadmodule dav_module modules/mod_dav.so

改成:

loadmodule dav_module modules/mod_dav.so

即去掉前面的“#”号。

添加:

loadmodule dav_svn_module modules/mod_dav_svn.so

一定确定它在 mod_dav 之後。

現在你已經設定了apache和s version,但是apache不知道如何處理s version用戶端,例如tortoisesvn。為了讓apache知道哪個目錄是用來作為s version版本庫,你需要使用編輯器(例如記事本)編輯apache的配置檔案。

在配置檔案最後添加如下幾行:

<location / repository>

dav svn<

br /> svnpath e:/svn/repos1

</location>

這個配置告訴apache首先需要啟用 dav_module,然後加載 dav_svn_module 。版本庫對外的url是:http://伺服器ip/repository ,所有的s version版本庫在實體上位于e:/svn/repos1 。

配置完畢後重新啟動 apache,打開浏覽器,輸入 http://伺服器ip/ repository 将會看到如下畫面:

這表示 apache 的 dav_svn 子產品已經可以正常工作了。使用者可以使用任何一種 s version 的用戶端通過 http 協定通路你的版本庫。

如果想要指定多個版本庫,可以用多個 location 标簽,也可以使用 svnparentpath 代替 svnpath,例如在 e:\svn 下有多個版本庫 repos1,repos2 等等,用如下方式指定:

<location /repository>

dav svn

svnparentpath e:/svn

“svnparentpath e:/svn ” 表示 e:\svn 下的每個子目錄都是一個版本庫。可以通過 http://伺服器ip/repository/repos1,http://伺服器ip/repository/repos2 來通路。

現在你的版本庫任何人都可以通路,并且有完全的寫操作權限。也就是說任何人都可以匿名讀取,修改,送出,以及删除版本庫中的内容(注:這時不需要配置e:\svn\repos\conf\svnserve.conf 檔案,并且也不需要啟動e:\s version\bin\svnserve.exe。因為送出是通過apache的dav子產品處理的,而不是由svnservice處理。)。我們用

tortoisesvn 用戶端驗證即知。

顯然大部分場合這是不符合需求的。那麼如何進行權限設定呢,apache 提供了基本的權限設定:

四、認證選項

1、基本 http 認證

最簡單的用戶端認證方式是通過 http 基本認證機制,簡單的使用使用者名和密碼來驗證一個使用者的身份。apache提供了一個 htpasswd 工具來管理一個使用者檔案,這個檔案包含使用者名和加密後的密碼,這些就是你希望賦予 s version 特别權限的使用者。htpasswd 可以在 apache 的 bin 安裝目錄下找到。具體使用方法如下:

建立使用者檔案:

htpasswd -c /etc/svn/passwordfile username

添加新使用者(-m 表示以md5加密密碼):

htpasswd [-m] /etc/svn/passwordfile newusername

更改使用者密碼:

htpasswd [-m] /etc/svn/passwordfile username

删除使用者(要用大寫的 d ):

htpasswd –d /etc/svn/passwordfile username

接下來修改 httpd.conf,在 location 标簽中加入如下内容:

authtype basic

authname "svn repos"

authuserfile e:/usr/apache2.2/bin/passwd

require valid-user

說明:

authtype basic:啟用基本的驗證,比如使用者名/密碼對。

authname "svn repos":當一個認證對話框彈出時,出現在認證對話框中的資訊。(最好用英文,tortoisesvn 不支援中文,安裝語言包除外。)

authuserfile e:/usr/apache2.2/bin/passwd:指定e:\usr\apache2.2\bin\passwd為使用者檔案,用來驗證使用者的使用者名及密碼。

require valid-user:限定使用者隻有輸入正确的使用者名及密碼後才能通路這個路徑

重新啟動 apache ,打開浏覽器通路版本庫。apache 會提示你輸入使用者名和密碼來認證登陸了,現在隻有 passwd 檔案中設定的使用者才可以通路版本庫。也可以配置隻有特定使用者可以通路,替換上述 "require valid-user" 為 "require user tony robert" 将隻有使用者檔案中的 tony 和 robert

可以通路該版本庫。

有的時候也許不需要這樣嚴格的通路控制,例如大多數開源項目允許匿名的讀取操作,而隻有認證使用者才允許寫操作。為了實作更為細緻的權限認證,可以使用 limit 和 limitexcept 标簽。例如:

<limitexcept get propfind options report>

</limitexcept>

以上配置将使匿名使用者有讀取權限,而限制隻有 passwd 中配置的使用者可以使用寫操作。

如果這還不能滿足你的要求,你希望精确的控制版本庫目錄通路,可以使用 apache 的 mod_authz_svn 子產品對每個目錄進行認證操作。

2、用 mod_authz_svn 進行目錄通路控制

首先需要讓 apache 将 mod_authz_svn 子產品加載進來。在 s version 的安裝目錄中找到 mod_auth_svn 子產品,将其拷貝到 apache 安裝目錄的 modules 子目錄下。修改 httpd.conf 檔案,添加:

loadmodule authz_svn_module modules/mod_authz_svn.so

現在可以在 location 标簽中使用 authz 的功能了。一個基本的 authz 配置如下:

# our access control policy

authzsvnaccessfile e:/usr/apache2.2/bin/accesspolicy.conf

# try anonymous access first, resort to real 

# authentication if necessary.

satisfy any

# how to authenticate a user

authname "s version repository"

authuserfile e:/usr/apache2.2/bin/passwd 

authzsvnaccessfile 指向的是 authz 的政策檔案,詳細的權限控制可以在這個政策檔案中指定。通路檔案 accesspolicy.conf 的文法與svnserve.conf和 apache 的配置檔案非常相似,以(#)開頭的行會被忽略;在它的簡單形式裡,每一小節命名一個版本庫和一個裡面的路徑;認證使用者名是在每個小節中的選項名;每個選項的值描述了使用者通路版本庫的級别:r(隻讀)或者rw(讀寫),如果使用者沒有提到或者值留白,通路是不允許的;

* 表示所有使用者,用它控制匿名使用者的通路權限;@符号區分組和使用者。如:

[groups] 

committers = paulex, richard

developers = jimmy, michel, spark, sean

[/] 

* = r 

@committers = rw

[/branches/dev] 

@developers = rw

[/tags] 

tony = rw 

[/private] 

* = 

@committers= r

使用 svnparentpath 代替 svnpath 來指定多個版本庫的父目錄時,其中所有的版本庫都将按照這個政策檔案配置。例如上例中 tony 将對所有版本庫裡的 /tags 目錄具有讀寫權限。如果要對具體每個版本庫配置,用如下的文法:

project1_committers = paulex, richard

project2_committers = jimmy, michel, spark, tony, robert

[repos1:/] 

@ project1_committer = rw

[repos2:/] 

@ project2_committer = rw

這樣 repos1的 project1_committer 組隻能對 repos1 版本庫下的檔案具有寫權限而不能修改版本庫 repos2 ,同樣 repos2 的 project2_commiter 組也不能修改 repos1 版本庫的檔案。

faq:

1、路徑或權限不足時将出現錯誤資訊提示:

http://localhost (路徑不對)

error * propfind reqst failed on ''/'' propfind of ''/'': 200 ok (http://localhost)

http://localhost/svn (權限不足) 

error * propfind reqst failed on ''/svn'' propfind of ''/svn'': 403 forbidden (http://localhost)

http://localhost/svn/repos (正常顯示)

http://localhost/repos (權限不允許) 

error * propfind reqst failed on ''/repos'' propfind of ''/repos'': 405 method not allowed (http://localhost)

2、不啟動e:\s version\bin\svnserve.exe ,但啟動了apachesvn ,通路(tortoisesvn –> repo – browser)或送出(svn commit)情形如下:

現象:svn://localhost/svn/repos 不能通路或送出,提示:error * can''t connect to host ''localhost'': 由于目标機器積極拒絕,無法連接配接。 但 file:///e:/svn/repos 和 http://localhost/svn/repos 可以通路或送出。

原因:svn:// 是獨立伺服器 svnserver 自己的協定。file:/// 是本地通路,即伺服器端和用戶端在一個機器上。

文章出處:http://www.diybl.com/course/1_web/webjs/2008410/109655_2.html

http://hi.baidu.com/yuncsoft/blog/item/19b41d5168e4a81c377abed6.html

安裝svn伺服器後,為了友善啟動必須在windows下添加服務項

我們使用批處理完成,做這一步要注意,添加之後隻能從系統資料庫删除,如果你知道别的辦法請留言。感激不盡。

自動更新的配置:

開發中經常要在更新svn的同時要更新web伺服器。可以用過s version的鈎子(hook)來實作。

以下是windows作業系統下的配置:

在svn庫的hooks目錄下面建立post-commit.bat檔案,用記事本打開,然後寫入如下的代碼:

@echo off

set repos=%1

set rev=%2

set dir=%repos%/hooks

set path=%path%;

set working_copy=d:\websites\latisse

svn update %working_copy% –username user –password pwd

此處的d:\websites\latisse即是web網站的目錄(當然得先建好這個目錄,并且從svn伺服器上簽出相應的項目)。

這樣在使用者送出完後,便會自動更新到web伺服器上。

需要注意到問題是:

1.不要在web網站檔案夾下作修改或其它操作,防止出現檔案夾被鎖。無法更新。

2.在這裡我明确寫明了使用者名(user),密碼(pwd)。在我設定時發現,如果沒有設定的話會出現錯誤,在直接運作這個bat檔案時是能正常執行的,但是,在s version送出後卻不能正常運作。并且可以看到伺服器程序中會出現cmd,svn兩個程序,并且不會自己結束,而使用者在送出内容到伺服器後,會出現用戶端無法正常傳回的問題。

3.如果運作不能正常,可以通過下面的方法看到出錯資訊:

将剛才的post-commit.bat改名為post-commit-run.bat,然後再建一個post-commit.bat的檔案,裡面寫入如下的代碼:

call %~dp0post-commit-run.bat %* > %1/hooks/post-commit.log 2>&1

這樣運作結果就會被寫入到post-commit.log檔案中,如果出錯,也可以找到出錯的原因。

svn服務端更改ip後,用戶端重新定位方法:

使用最新版本的tortoisesvn,右鍵在工作複本的根目錄上右鍵->tortoisesvn->重新定位(relocate),再按提示操作就可以了..不過最好先備份..因為這個操作有一定的危險性