Subversion for Windows 安裝指南

來源:互聯網
上載者:User

=========================================================

本文為轉載資料,轉載必須確保本文完整並完整保留原作者資訊和本文連結

E-mail: khler@163.com

QQ:     23381103

MSN:   pragmac@hotmail.com

=========================================================

 

最近因為工作需要需要配置一個svn伺服器,經過幾番實驗並閱讀了大量資料,終於最終配置完成。

網上資料實在良莠不齊,很容易浪費寶貴時間,所以我在此搜集整理了一些資料,並經過自己實踐證明確實可用,也希望大家能快速而順利的完成配置工作。

本人基於Apache 2.2.9 + Subversion1.5.3配置完成,需要注意的是:

1、一般可以通過瀏覽器敲入IP地址來驗證Apache是否工作,如我的http://192.168.1.102/,則出現"It works!"頁面則表示Apache已經能正常工作。但是你會發現同一個區域網路的另一台機器則不能訪問,這是因為防火牆阻止了訪問,你可以把卡巴斯基(我自己用的卡巴,因人而異)以及Windows的防火牆關閉;

2、每次改變Apache的httpd.conf檔案後必須重啟Apache;

3、如果你的Subversion不是安裝版,則必須在Windows的系統內容變數中添加Subversion的bin目錄,如我的Subversion放在了C:\Program Files\Subversion11.5.3\下,則我在系統變數的Path項的後面添加如下路徑:C:\Program Files\Subversion11.5.3\bin。添加完了必須重啟才能有效。

                                                        ---khler

                                                        2008.10.15

 

本文是基於蔡煥麟的文章整理的,整理者:airun、khler
摘 要
本文提供一個簡易的安裝指南,說明在 Windows 環境下安裝 Subversion 伺服器的步驟,以及 TortoiseSVN 用戶端工具的安裝步驟。文中提到的所有操作(2.6.2除外)本人都做過實踐驗證。
目 錄
1 簡介

1.1 閱讀基本概念

1.2 環境與版本

2 安裝和建立Subversion伺服器

2.1 安裝 Apache HTTP Server

2.2 安裝 Subversion

2.3 設定 Subversion 檔案庫路徑

2.3.1 SVNPath

2.3.2 SVNParentPath

2.4 建立檔案庫

2.5 引入項目

2.5.1 檔案庫與項目的配置方式

2.5.2 項目的目錄結構

2.6 存取控制

2.6.1 基本(Basic)存取控制

2.6.2 SSPI認證存取控制(使用 Windows 網域帳戶驗證

2.7 提交控制

2.7.1 限制提交特定的檔案類型

2.7.2 強制要求輸入Log-Message

2.7.3 一個修改Log-Message的方法

3 安裝用戶端TortoiseSVN

3.1 安裝 TortoiseSVN

4 結束語

5 參考資料

1 簡介
Subversion 是一個版本控制系統,它是根據 CVS(Concurrent Versions System)的功能為基礎來設計,但是改進了一些 CVS 的缺點,例如:在 CVS 中移動檔案目錄很不方便;此外,它也增加了其他的功能,例如:不可分割的送交(如同資料庫交易的概念,送交多個檔案時,若有任何一個檔案失敗,則這次送交的所有檔案都不會進入檔案庫中),支援多種網路通訊協定,一致的檔案差異比對(不管什麼檔案類型,均使用二進位差異比對方式),等等。

由於目前手邊查到的 Subversion 檔案主要都是針對 Linux 使用者來撰寫的,所以這份檔案特地針對 Windows 環境下安裝 Subversion 的步驟來說明,希望透過這份檔案,能夠協助你很快的把 Subversion 安裝起來。如果熟悉了的話,一兩個小時就可以搞定。

在安裝過程中,會需要輸入一些命令列的指令,我不會詳細解釋某些指令的用途和意義,因此你除了要熟悉 DOS 的基本指令,還應該隨時查閱 Subversion 的電子書(有中文版,比如“svn寶典.pdf”等),以瞭解 Subverion 命令工具的使用方法。圖形化介面雖然方便,但是熟悉命令工具的使用,才能讓你得到完全的自由。

1.1 閱讀基本概念
如果你缺乏版本控制系統的基本概念,就算能夠順利安裝好 Subversion,可能安裝完成後就不知道下一步怎麼做了。這裡只簡單的提一點必要的基礎概念,你最終還是得閱讀 Subversion 的官方檔案。

1.2 環境與版本
以下是我安裝 Subversion 的環境與版本:
• Windows 2000 Server with SP4
• Apache HTTP Server: Apache_2.0.63-win32-x86-no_ssl.msi
• SSPI:mod_auth_sspi-1.0.2-2.0.54.zip
• Subversion: Setup-Subversion-1.5.1.en-us.msi
• TortoiseSVN: TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi

2 安裝和建立Subversion伺服器
本節介紹安裝 Subversion 所需的步驟,請準備一台穩定的機器,作為 Subversion 的伺服器,硬碟空間要盡量大一些,以避免因磁碟空間不夠而頻繁更換伺服器。

2.1 安裝 Apache HTTP Server
到 http://httpd.apache.org/ 下載 Apache HTTP Server 2.0 版 for Windows 的安裝程式,我下載的檔案是 Apache_2.0.63-win32-x86-no_ssl.msi。
下載之後直接安裝,安裝過程很簡單,就不贅述了,但安裝之前請先檢查你的電腦是否有安裝 IIS,由於 Apache 預設使用 80 port,會跟 IIS 的網站衝突,你必須把 IIS 的 Web 月台關閉,再安裝 Apache HTTP Server。
安裝完成以後,啟動Apache,開啟瀏覽器,瀏覽網址 http://127.0.0.1/ 看看有沒有安裝成功。如果頁面顯示“您能看見這個頁面,說明Apache web server 已經安裝成功。您可以在這個目錄中增加內容,或者把這個頁面替換掉。”等文字,則表示已經安裝成功了。
為方便描述,下文我們假設Apache HTTP Server 安裝到了<Apache_root>目錄下。

2.2 安裝 Subversion
1. 到 http://subversion.tigris.org/ 下載最新版的Subversion,可以下載.zip 或者打包好的自動安裝程式,我下載的是 Setup-Subversion-1.5.1.en-us.msi。

2. 下載後直接安裝,安裝過程都是下一步,沒什麼特別的。安裝完成後,連必要的環境變數都幫你設定好了(如果你下載的是 .zip 檔案,就要自行設定)。為方便描述,下文我們假設Subversion 安裝到了<Subversion_root>目錄下。

3. 把 <Subversion_root>/bin/ 目錄下的 mod_dav_svn.so 和 mod_authz_svn.so 複製到 <Apache_root>/modules/ 目錄下。

4. 把 <Subversion_root>/bin/ 目錄下的 libdb44.dll、libeay32.dll、以及 ssleay32.dll 複製到 <Apache_root> 底下的 bin 或 modules 目錄下。

5. 接著用文字編輯器開啟 Apache HTTP Server 的<Apache_root>/conf/httpd.conf,尋找一堆 LoadModule 指令,先找到以下兩行:

#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so

把這兩行最前面的 '#' 字元刪除,然後把下面這行加到這群 LoadModule 指令的後面:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

6. 重新啟動 Apache HTTP Server。

問題排除

如果 Apache HTTP Server 無法啟動,請依下列步驟檢查:
1. 檢查 Subversion 的路徑是否有在系統的 %PATH% 環境變數裡面。
2. 檢查你加入 httpd.conf 裡的項目是否正確,記住 mod_dav_svn.so 和 mod_authz_svn.so
必須在其他 mod_dav*.so 模組之後載入。

 

2.3 設定 Subversion 檔案庫路徑

現在要設定 URL 路徑與檔案庫實際路徑的對應關係。對應的方式有兩種,分別是 SVNPath 與 SVNParentPath。

2.3.1 SVNPath

SVNPath 適合用來個別指定檔案庫的路徑,文法是:

<Location /svn/repos_name>
DAV svn
SVNPath /absolute/path/to/repository
</Location>

其中 "/svn/repos_name" 就是使用者端存取特定檔案庫的 URI(Uniform Resource Indentifier),SVNPath 後面指定的路徑則是檔案庫的絕對路徑,假設我們的檔案庫實際存放的路徑是 d:/svn/MyRepository,並且希望使用者端使用 "http://myserver/svn/myrepos" 的 URL 來存取檔案庫,那麼要加入 httpd.conf 的內容就是:

<Location /svn/myrepos>
DAV svn
SVNPath d:/svn/MyRepository
</Location>

注意 Location 標籤後面的 /svn/myrepos 的第一個斜線不可少!

2.3.2 SVNParentPath

如果你的檔案庫都集中放在某個目錄之下,例如:d:/svn,那你就可以使用 SVNParentPath 的方式指定檔案庫的根路徑,文法是:

<Location /svn>
DAV svn
SVNParentPath /absolute/path/to/repository
</Location>

其中的 SVNParentPath 後面指定的路徑是檔案庫的絕對路徑,假設我們的檔案庫實際存放的路徑是 d:/svn,那麼要加入 httpd.conf 的內容就是:

<Location /svn>
DAV svn
SVNParentPath d:/svn
</Location>

這表示可以讓任何人都可以透過 http://myserver/svn/<檔案庫名稱> 的方式,存取位於 d:/svn 這個目錄以下的所有檔案庫。也就是說,這個設定動作只需要一次,如果使用 SVNPath,那麼你必須為各個檔案庫分別指定對應的路徑。

為方便起見,我們這裡用 SVNParentPath 來統一指定所有檔案庫的父層 URL 路徑。將上述的設定加到 Apache HTTP Server 的 httpd.conf 檔案尾部就行了。
接下來就可以在 d:/svn 底下建立檔案庫了。

2.4 建立檔案庫

假設我們要把所有的檔案庫都放在 d:/svn 目錄下,現在要建立一個測試用的檔案庫,名稱叫做 repository,指令為:

md d:/svn
svnadmin create d:/svn/repository

命令執行完後,檢查看看 d:/svn/repository 目錄底下產生了哪些目錄和檔案。

 

警告

檔案庫絕對不可以在建立在任何遠端的儲存媒體上,例如:網路硬碟機。

 

這時候你已經建立了一個檔案庫,你可以先在本機用瀏覽器測試一下,網址輸入 http://127.0.0.1/svn/repository或http://localhost/svn/repository,看看能不能看到檔案庫的內容,正常的話應該像一樣。

 

如果以上的測試可以通過,應該就行了,假如你的區域網路中安裝svn的伺服器IP地址是192.168.1.8,則在區域網路中另外一台機器(用戶端)上輸入http://192.168.1.8/svn/repository,應該是可以看到同樣畫面的。如果不行,則要找一下你們網管了。

如果你想要測試一下能否從檔案庫取出整個工作複本(此操作並非必需),則可以進入目標目錄後(假設為d:/svn_temp)執行以下指令從檔案庫取出整個工作複本:

svn co http://localhost/svn/repository WholeRepos

該指令是要 svn.exe 執行 check out 動作(縮寫 co),如果正確的話,應該會顯示 "Checked out revision 0." 的資訊,此時 d:/svn/repository 這個檔案庫底下的所有檔案目錄都已經取出,並且複製了一份到d:/svn_temp/WholeRepos 目錄下了。

 

問題排除

如果顯示的錯誤資訊是:
svn: PROPFIND request failed on '/svn/repository'
svn: PROPFIND of '/svn/repository': 405 Method Not Allowed (http://localhost/)
請檢查 Apache HTTP Server 的 httpd.conf 檔案裡面的 <Location> 標記所定義的位置是否跟你指定的 URL 樣式相同,注意一定要完全相同,以上面的例子而言,你的 httpd.conf 的最後面應該會有以下文字:
<Location /svn>
DAV svn
SVNPath 指向檔案庫的絕對路徑
</Location>
如果顯示的錯誤資訊是:
svn: PROPFIND request failed on '/svn/repository'
svn:
Could not open the requested SVN filesystem
那表示在 /svn 對應的實驗目錄(即 d:/svn)下找不到 reposiroty 這個目錄。
註:PROPFIND 是給 WebDAV 用的 HTTP method,用來從資源中取得屬性。

 

到目前為止,可以確定檔案庫已經建立完成,接下來就可以引入項目了。

2.5 引入項目

不用急著把你現有的正式項目引入到檔案庫,假設我們現在有一個測試專案,項目目錄位於d:/svn_temp/projectA,底下有下列子目錄(當然也可以拷貝些檔案到這些子目錄中):

trunk
branches
tags

則進入d:/svn_temp/projectA目錄後執行以下指令就可以將測試專案projectA引入到檔案庫

d:/svn/repository/projectA中。
svn import . http://localhost/svn/repository/projectA -m "Initial repository layout"

 

提示

本文在執行 svn 命令時,都是使用 http 協議的方式,這樣我們可以確知 Subversion 與 Apache HTTP Server 的設定無誤,其他人就可以透過 Internet 存取檔案庫。當然你也可以用其他的協議,例如:http://www.cnblogs.com/khler/admin/file:///,如果使用 file 協議,則該指令要變成:
svn import . http://www.cnblogs.com/khler/admin/file:///d:/svn/repository/projectA -m "Initial repository layout"

 

命令執行無誤的話,應會看到如下的畫面:

 

這時候 projectA 這個項目已經引入檔案庫了(此時你會發現在d:/svn/repository/db/revs目錄下多了一個叫1的檔案),也就是說,其他使用者可以開始存取這個檔案庫的項目取出檔案和程式碼了。你可以參考 Subversion 的官方手冊中關於 svn.exe 這個用戶端命令列工具的使用方法,多練習一下取出檔案、加入檔案、以及存入檔案等指令。萬一練習的過程中發生錯誤,或者檔案庫弄亂了,你可以把整個檔案庫的目錄砍掉,回到 2.4 節重新做一遍。

以下會進一步討論檔案庫和項目目錄結構的安排方式,如果你急著想試試看用戶端如何存取 Subversion 檔案庫,可以先跳到2.6 節或第 3 節。

2.5.1 檔案庫與項目的配置方式

如果我們要在repository檔案庫中引入多重專案,比如再將d:/svn_temp/projectB項目放到repository/projectB目錄下,則進入projectB目錄,用下面的命令引入projectB:

svn import . http://localhost/svn/repository/projectB -m "Initial repository layout"

引入projectB後,repository檔案庫的目錄結構就會變成這樣:

/svn/repository/
+-- projectA/
+-- projectB/

也就是說 repository 這個檔案庫裡麵包含了兩個項目。

如果你希望為每個項目建立一個檔案庫,那麼在 2.4 節中建立檔案庫的指令就變成:

md d:/svn
svnadmin create d:/svn/projectA
svnadmin create d:/svn/projectB

這樣就變成有兩個檔案庫了,檔案庫名稱分別是 ProjectA 與 ProjectB。

 

提示

如果項目之間有共用的檔案,建議把這些相關的項目放進同一個檔案庫;如果項目之間彼此毫無關係,那就採用一個檔案庫放一個項目的方式,這種方式等於項目就是檔案庫。
第一種方式有個比較奇怪的「功能」你應該要知道,就是一個項目的 check in 動作,也會令其他項目的檔案的修訂版號增加 ,如果這不是你想要的,請選擇第二種方式,即一個檔案庫只存放一個項目。

2.5.2 項目的目錄結構

這裡補充說明一下 ProjectA 的目錄結構。在 ProjectA 項目的根目錄下建立的 trunk、branches、和 tags 這三個目錄是有特別意義的,它們的作用分別是:

• trunk 目錄用來存放目前項目進行中開發的程式檔案和文檔(又稱為主線,即 mainline);
• branches 用來存放主線的各個仍在發展中的分支;
• tags 則用來存放已經不再變動的分支,也就是其中的檔案不會再修改了。

這是 Subverion 官方手冊建議的目錄結構安排方式,你可以自己決定要不要用這種配置方式,詳細說明請參考官方手冊的第五章,子標題為 "Choosing a Repository Layout"。

提示

目錄名稱建議盡量不要用中文名稱,這樣在使用命令列時比較方便,也比較不會有問題。

 

2.6 存取控制

2.6.1 基本(Basic)存取控制

照著前面的步驟做,你會發現存取檔案庫時都不用輸入帳號密碼,這是因為我們之前的設定沒有啟用身分驗證的功能。但是我們通常不希望所有人都能任意存取你的檔案庫,免得重要資料外泄,或者資料被破壞,因此瞭解如何加入身分驗證也是必要的。

Sebversion 提供了多種驗證使用者身份的方式,首先介紹Basic存取控制,按下列步驟進行:

1. 修改 httpd.conf 的 <Location> ,設定如下:

<Location /svn>
DAV svn
SVNParentPath d:/svn
AuthName "Subversion repository"
AuthzSVNAccessFile "d:/svn/accessfile.txt"
Require valid-user
Satisfy Any
# The following is Basic authentication setting
AuthType Basic
AuthUserFile "d:/svn/passwd.txt"
</Location>

其中AuthzSVNAccessFile指定了檔案庫訪問政策檔案,Require valid-use表示只有經過認證的使用者才可以訪問, Satisfy Any表示允許匿名訪問(要與後面提到的*參數配套使用),AuthUserFile用來指示使用htpasswd建立的密碼檔案的位置。

如果你想用不同的訪問政策檔案和密碼檔案控制不同的檔案庫,那麼可以在httpd.conf中寫多個<Location></Location>模組,並用SVNPath指定各檔案庫的絕對路徑(參考2.3.2)。

2. 用Apache的htpasswd指令產生使用者名稱和密碼:

htpasswd -cm d:/svn/passwd.txt username1
htpasswd -m d:/svn/passwd.txt username2
htpasswd的參數-c是建立檔案的意思,故只在首次使用,僅使用-m參數時也可用來修改密碼。

3. 設定檔庫訪問政策檔案(假設repository檔案庫下已經建立了projectA和projectB),如:

[repository:/]
username1 = rw
[repository:/projectA]
username2 = r
[repository:/projectA/trunk]
username1 =
username2 = rw
[repository:/projectB]
* = r
[repository:/projectB/trunk]
username1 =

小節名稱中冒號前面的檔案庫名稱不要輕易省略,省略就代表是針對所有檔案庫,這樣是很為危險的,*號代表所有使用者,等號後面為空白表示沒有許可權,mod_authz_svn模組首先會找到匹配自己的目錄,然後是父目錄,父目錄的父目錄,依次下去,並會以最近找到的描述為準。另外,你還可以定義一組使用者,然後按組進行許可權配置,比如:

[groups]
department_1 = username1, username2
department_2 = username3, username4, username5
[repository:/projectA]
@department_1 = r
@department_2 = rw

4. 重新啟動 Apache(注意,對httpd.conf的修改必須重啟Apache後才會生效),開啟瀏覽器,輸入網址 http://127.0.0.1/svn/repository 看看,你預期應該會看到如下的驗證畫面:

 

5. 如果要讓使用者能遠程修改自己的Subversion密碼,也很簡單,有人已經把你做了相關工作了,可訪問http://bbs.iusesvn.com/thread-20-1-1.html網站下載Apache20Passwd.rar,將其中的passwd.cgi及passwd.cgi.ini複製到<Apache_root>的cgi-bin子目錄中,然後修改設定檔passwd.cgi.ini中的auth_user_file路徑,使得其指向實際的AuthUserFile的全路徑(比如“d:/svn/passwd.txt”),這時使用者就可以訪問http://localhost/cgi-bin/passwd.cgi修改subversion密碼了。

2.6.2 SSPI認證存取控制(使用 Windows 網域帳戶驗證)

這種方式很適合用在Team Dev成員都在地區網路內的情況,按下列步驟進行:

1. 取得 SSPI 模組,下載網址為(Apache與SSPI之間是有版本對應關係的,要特別注意): http://www.gknw.net/development/apache/httpd-2.0/win32/modules/mod_auth_sspi-1.0.2-2.0.54.zip

2. 把 mod_auth_sspi.zip 裡面bin目錄下的 mod_auth_sspi.so 解壓縮到 <Apache_root>\modules 目錄下。

3. 把下面這行加入到 Apache 的 httpd.conf 裡面:

LoadModule sspi_auth_module modules/mod_auth_sspi.so

注意上面加入的這行一定要放在下面這行的前面:

LoadModule auth_module modules/mod_auth.so

4. 修改 httpd.conf 的 <Location> ,設定如下:

<Location /svn>
DAV svn
SVNParentPath d:/svn
AuthName "Subversion repository"
AuthzSVNAccessFile "d:/svn/accessfile.txt"
Require valid-user
Satisfy Any
# The following is SSPI authentication setting
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain <domaincontroller>
SSPIOfferBasic On
</Location>

其中<domaincontroller> 就是你的 Windows 網網域控制站的電腦名稱(例如:WIN2KDC),注意兩邊的括弧 <> 不用保留。如果你的環境沒有網網域控制站,就維持原來的 <domaincontroller> 就行了。在我的環境下,我發現即使有網網域控制站,但是這裡不去設定它,還是能夠正常的驗證使用者身份。另外注意,這種方式不再需要用AuthUserFile來指示密碼檔案了。檔案庫訪問政策檔案也要做相應修改:

[repository:/]
domain\username1 = rw
[repository:/projectA]
domain\username2 = r
[repository:/projectA/trunk]
domain\username1 =
domain\username2 = rw
[repository:/projectB]
* = r
[repository:/projectB/trunk]
domain\username1 =

5. 重新啟動 Apache,開啟瀏覽器,輸入網址 http://127.0.0.1/svn/repository ,這時也應該看到驗證畫面。但是如果沒有出現這個畫面,而是直接顯示檔案庫內容,怎麼回事?

因為我們現在是使用 Windows 帳戶驗證,你目前已經登入這台機器了,而你要存取的也是原生資源,換句話說,你的身分已經被驗證過了,所以就不會再要求你輸入帳號跟密碼,這是採用 SSPI 網域驗證的好處。

那麼,如果你的同事 John 的電腦有加入網域,但是他平時都是登入本機,而非登入網域,在存取檔案庫時會不會要求輸入帳號密碼?答案是如果 John 登入他原生帳號和密碼跟他在網域使用者的帳號密碼完全一樣的話,就無需再輸入密碼;相反的,如果登入原生使用者帳號和密碼與網域使用者帳號密碼不同,第一次存取時就必須輸入密碼。

你可以在別台機器上,用一個網域裡沒有的使用者帳號去存取 Subverion 檔案庫,如果正確的話,應該就會出現要求輸入帳號密碼的視窗。

以上是些基本的設定,如果你希望做進一步的設定,或者要加入 SSL 加密機制,建議您參考 [2] 的第三章。

 

提示

啟用身分驗證之後,你會發現用命令列工具 svn.exe 存取檔案庫時,如果是用 http:// 協議,有些子命令(subcommand)執行時會出現 "authorization failed" 的錯誤,這時候你可以在 svn 命令中加入 --username 和 --password 來提供使用者名稱和密碼,例如:
svn co http://myserver/svn/ --username michael --password guesswhat
或者你也可以改用 http://www.cnblogs.com/khler/admin/file:/// 協議。

 

2.7 提交控制

2.7.1 限制提交特定的檔案類型

用戶端提交修改點時,若要限制提交某些特定類型的檔案,則可以在相應的版本庫目錄的hooks目錄下建立pre-commit.bat檔案,並將下面的指令拷貝到pre-commit.bat中。

@echo off
set SVN_BINDIR="c:\Program Files\Subversion\bin"
setlocal
set REPOS=%1
set TXN=%2
rem check that the file type is permitted or not
%SVN_BINDIR%\svnlook changed "%REPOS%" -t "%TXN%" | findstr "\.obj$ \.o$ \.bak$ \.scc$ \.ncb \/複件." > nul
if %errorlevel% equ 0 goto FILETYPEERROR
exit 0
:FILETYPEERROR
echo 提交失敗,不允許提交.obj、.o、.bak、.scc、.ncb檔案或以"複件"開頭的檔案。>&2
exit 1

其中SVN_BINDIR後面的路徑要修改為你實際的Subversion安裝路徑;REPOS代表svn調用pre-commit時的第一個參數REPOS-PATH (the path to this repository);TXN代表第二個參數TXN-NAME (the name of the transaction about to be committed);findstr "\.obj$ \.o$ \.bak$ \.scc$ \.ncb \/複件."表示尋找以.obj、.o、.bak、.scc、.ncb為結尾或含有"/複件"的行。當然,你也可以通過類似的方法讓使用者只能提交某些特定類型的檔案。

2.7.2 強制要求輸入Log-Message

用戶端提交修改點時,若需強制要求提交者在Message欄中輸入資訊,則可以使用svnlook log命令實現,在pre-commit.bat檔案的對應位置加入下面兩段指令即可:

rem check that log-message contains at least 10 characters
%SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
if %errorlevel% gtr 0 goto NOMESSAGE
:NOMESSAGE
echo 提交失敗,請在Message輸入框中輸入提交說明,至少10個字元。>&2
exit 1

其中要求至少輸入的字元個數由findstr後面的.的個數決定。

2.7.3 一個修改Log-Message的方法

當用戶端提交修改點後,其Log-Message資訊通常也就不能再被修改了,但是如果Log-Message資訊中出現嚴重錯誤時,可用下面的方法挽救:

1. 在伺服器上建立一個臨時.txt檔案,比如newlog.txt,然後將新的Log-Message寫入其中。

2. 開啟命令列模式並進入到newlog.txt所在的目錄,執行如下命令:

svnadmin setlog d:/svn/repository –r N --bypass-hooks newlog.txt

其中N代表需要修改Log-Message的Revision number,--bypass-hooks代表不通過 pre-revprop-change hook的控制。

修改Log-Message是一個不好的做法,若不是迫不得已,建議不要用。

3 安裝用戶端TortoiseSVN

現在你已經有一個可以運作的 Subversion 伺服器,可以試著在其他電腦上存取檔案庫了。如果你習慣使用命令列工具,那就只要在用戶端電腦上安裝 Subversion 就行了,存取檔案庫都是透過命令列工具(主要是 svn.exe)。這裡要介紹的是一個專門為 Windows 作業系統設計的 Subversion 用戶端:TortoiseSVN(以下簡稱 TSVN)。

3.1 安裝 TortoiseSVN

1. 到 http://tortoisesvn.tigris.org/ 下載最新的安裝程式,比如TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi。安裝完成後會要求你重新開機。

2. 到 http://tortoisesvn.tigris.org/ 下載簡體中文的語言套件(language pack),請注意語言套件的版本應該要跟你安裝的 TSVN 版本相同,否則最好不要安裝。

語言套件裝完之後,用資源管理員在 Windows 案頭上或任何一個檔案夾點一下滑鼠右鍵,選擇 TortoiseSVN -> Settings,在 "Main" 頁夾中更改 Language 設定為「中文(簡體)」,再按「確定」鈕即可。

3. 如果你是透過 proxy server 存取 Internet,請在 TSVN 的設定視窗中,切到「網路」頁面,然後輸入你的 proxy server 相關資訊,否則你將無法存取位於 Internet 上的檔案庫。

安裝完成之後,在任何目錄名稱上點一下滑鼠右鍵都可以看到 TSVN 的功能選項,這也是 TSVN 方便的地方,它不用跟開發工具整合,而是跟作業系統整合在一起,這樣不管你用什麼開發工具,都可以輕鬆的使用 TSVN 來存取檔案庫。如果你希望在TSVN中使用Beyond Compare工具比較檔案,則在用戶端安裝Beyond Compare後,在任意目錄點滑鼠右鍵,進入Tortoise-->Settings-->External Programs-->Diff Viewer/Merge Tool/Unified Diff Viewer,在External Programs中指定BC2.exe的路徑即可。

接下來你可以用 TSVN 練習一下存取之前建立好的檔案庫,試著把你現有的項目引入檔案庫中,並且在用戶端使用 TSVN 執行取出、存入、更新等動作。

TSVN 雖然是用戶端工具,不過它也提供了建立檔案庫、以及引入、引出等功能,因此安裝在伺服器端也挺方便的。

這裡順便提幾個用戶端提交修改點時的注意事項:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.