1、版本
(a)Apache 2.2.25:httpd-2.2.25-win32-x86-no_ssl.msi
(b)Subversion:Setup-Subversion-1.8.5.msi
(c)TortoiseSVN:TortoiseSVN-1.8.4.24972-win32-svn-1.8.5.msi
注意版本的匹配。
2、安裝
服務器端需要安裝a、b、c。
安裝目錄: a:C:\Program Files\Apache Software Foundation
b:F:\Subversion
c:F:\TortoiseSVN
客戶端需要安裝c。
3、建立版本庫(Repository)
首先建立 e:\svn 空文件夾作為所有版本庫的根目錄。
然后,進入命令行並切換到subversion的bin目錄。輸入如下命令:
svnadmin create E:\svn\repos1
此命令在 E:\svn 下建立一個版本庫 repos1 。repos1 下面會自動生成一些文件夾和文件。
也可以使用 TortoiseSVN 圖形化的完成這一步:
先建立空目錄 E:\svn\repos1 ,注意一定是要空的。
然后在 repos1 文件夾上“右鍵->TortoiseSVN->Create Repository here...”,然后可以選擇版本庫模式,這里使用默認的FSFS即可,然后就創建了一系列文件夾和文件,同命令行建立的一樣。
4、運行獨立服務器
此時 subversion 服務還沒有開始,只是通過它的命令建立了版本庫。繼續在剛才的命令窗口輸入:
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
(svnserve.exe --daemon --root F:\svn )
然后TortoiseSVN中的版本庫瀏覽器URL縮減為:
svn://localhost/repo1
建議你到控制面板-管理工具-服務中找到SVNService,右擊選擇"屬性",再將其啟動類型設置為"自動",這樣每次開機自動啟動服務,不用手動啟動了。如果沒有這項服務的話,在命令行輸入
C:\Documents and Settings\Administrator>sc create svnserver binPath= "C:\Program Files\Subversion\bin\svnserve.exe --service -r e:\Repository" DisplayName= "subversion" depend= Tcpip start= auto
[SC] CreateService 成功
sc create svnserver binPath= "服務全名 --service -r 資源庫位置 "DisplayName="服務名" depend= 協議 start= 自動
創建autoRunSVN.bat文件,內容是:
sc create SVNServer binpath= "\"C:\Program Files\Subversion\bin\svnserve.exe\" --service -r d:\svn" displayname= "SVNService" depend= Tcpip start= auto
pause
【注意】“=”前沒有空格,之后必須有一個空格!
sc 知識點:
(1)sc是windows自帶的服務配置程序,MySVNServer 是服務的名稱。
(2)參數binPath表示svnserve可執行文件的安裝路徑,由於路徑中的"Program Files"帶有空格,因此整個路徑需要用雙引號引起來。而雙引號本身是個特殊字符,需要進行轉移,因此在路徑前后的兩個雙引號都需要寫成\" 。
(3)--service 參數表示以windows服務的形式運行,--r指明svn repository的位置,service參數與r參數都作為binPath的一部分,因此與svnserve.exe的路徑一起被包含在一對雙引號當中,而這對雙引號不需要進行轉義。
(4)displayname表示在windows服務列表中顯示的名字, depend =Tcpip 表示svnserve服務的運行需要tcpip服務,start=auto表示開機后自動運行。安裝服務后,svnserve要等下次開機時才會自動運行。 (5)binPath的等號前面無空格,等號后面有空格 displayname depend start也都一樣
service前面是--,不是- ,而r前面是-
(6)若要卸載svn服務,則執行 sc delete svnserve 即可。
(7)從“sc”到“auto”是在同一個命令sc,必須寫在同一行。
創建成功后,可以在運行中鍵入service.msc察看系統服務,找到SVNService項,查看這項服務的屬性,可以使用Windows提供的界面操作SVNService服務了。
(8)命令操作
啟動服務:
C:\>net start svnservice
SVNService 服務正在啟動 .
SVNService 服務已經啟動成功。
停止服務:
C:\>net stop svnservice
SVNService 服務正在停止.
SVNService 服務已成功停止。
刪除創建的服務
C:\>sc delete svn svnservice
5、權限設置
見我的另一博文。
6、初始化導入
下面就是將我們的數據(項目)導入到這個版本庫,以后就由版本庫管理我們的數據。我們的任何改動都回被版本庫記錄下來,甚至我們自己丟失、改錯數據時版本庫也能幫我們找回數據。
比如,我在 d:\wwwroot 下有個 guestbook 文件夾,里面存放的是我編寫的留言簿程序。
在此文件夾上“右鍵 -> TortoiseSVN -> Import...” ,在彈出對話框的“URL of repository”輸入“svn://localhost/repos1/guestbook”。在“Import message”輸入“導入整個留言簿”作為注釋。
點 OK 后要求輸入帳號。我們在用戶名和密碼處都輸入 test 。完成后 guestbook 中的內容全部導入到了 svn://localhost/svn/repo1/guestbook 。
我們看到在 e:\svn\repo1 沒有任何變化,連個 guestbook 文件夾都沒有建立,唯一的變化就是e:\svn\repo1容量變大了。實際上我們源guestbook中的內容已經導入 repo1 版本庫了,源 guestbook 文件夾可以刪除了。
需要注意的是,這一步操作可以完全在另一台安裝了 TortoiseSVN 的客戶機上進行。例如運行svnserve的主機的IP是133.96.121.22,則URL部分輸入的內容就是“svn://133.96.121.22” 。
7、svn操作
可參考svn手冊