1、獲取 Subversion 服務器程序
到官方網站(http://subversion.apache.org/packages.html)下載最新的服務器安裝程序。目前最新的是1.7.2版本,有好幾個人維護的SVN,可以隨便選一個下載,就選http://sourceforge.net/projects/win32svn/這個吧,我也沒比較哪個好,反正也差不多。
2、獲取 TortoiseSVN 客戶端程序
從官方網站 http://tortoisesvn.net/downloads 獲取最新的 TortoiseSVN 。TortoiseSVN 是一個客戶端程序,用來與 subvers 服務器端通訊。Subversion 自帶一個客戶端程序 svn.exe ,但 TortoiseSVN 更好操作,提高效率。
安裝 Subversion(以下簡稱SVN)的服務器端和客戶端。下載下來的服務器端是個 zip 壓縮包,直接解壓縮即可,比如我解壓到 E:\svns 。客戶端安裝就不說了。
運行Subversion服務器需要首先要建立一個版本庫(Repository)。版本庫可以看作是服務器上集中存放和管理數據的地方。
開始建立版本庫。首先建立 e:\svn 空文件夾作為所有版本庫的根目錄。然後,進入命令行並切換到subversion的bin目錄。輸入如下命令:
svnadmin create E:\svn\repos1
此命令在 E:\svn 下建立一個版本庫 repos1 。repos1 下面會自動生成一些文件夾和文件。
我們也可以使用 TortoiseSVN 圖形化的完成這一步:
先建立空目錄 E:\svn\repos1 ,注意一定是要空的。然後在 repos1 文件夾上“右鍵->TortoiseSVN->Create Repository here...”,然後可以選擇版本庫模式,這裡使用默認的FSFS即可,然後就創建了一系列文件夾和文件,同命令行建立的一樣。
此時 subversion 服務還沒有開始,只是通過它的命令建立了版本庫。繼續在剛才的命令窗口輸入:
svnserve.exe --daemon
svnserve 將會在端口 3690 等待請求,--daemon(兩個短橫線)選項告訴 svnserve 以守護進程方式運行,這樣在手動終止之前不會退出。注意不要關閉命令行窗口,關閉窗口會把 svnserve 停止。
為了驗證svnserve正常工作,使用TortoiseSVN -> Repo-browser 來查看版本庫。在彈出的 URL 對話框中輸入:
svn://localhost/svn/repos1
點 OK 按鈕後就可以看見 repos1 版本庫的目錄樹結構了,只不過這時 repos1 是個空庫。
你也可以使用--root選項設置根位置來限制服務器的訪問目錄,從而增加安全性和節約輸入svnserve URL的時間:
svnserve.exe --daemon --root drive:\path\to\repository
以前面的測試作為例,svnserve 將會運行為:
svnserve.exe --daemon --root e:\svn
然後TortoiseSVN中的版本庫浏覽器URL縮減為:
svn://localhost/repos1
你可能會問這樣豈不是每次啟動SVN服務器都要輸入一次命令?怎樣才能讓SVN服務器在開機的時候自動啟動呢?答案就是將SVN服務注冊到Windows系統服務,在Windows命令提示符裡執行命令
sc create SVN binpath= "\"e:\svns\bin\svnserve.exe\" --service -r e:\SVN" displayname= "SVN Service" depend= Tcpip start= auto,其中sc是Windows自帶的系統服務注冊工具。
PS:如果想從系統服務裡刪除剛才注冊的SVN服務可以使用sc delete SVN命令。
用文本編輯器打開E:\svn\repos1\conf目錄,修改svnserve.conf:
將:
# password-db = passwd
改為:
password-db = passwd
即去掉前面的 # 注釋符,注意前面不能有空格。
然後修改同目錄的passwd文件,增加一個帳號:
[users]
# harry = harryssecret
# sally = sallyssecret
改為如下,增加帳號,左邊是用戶名,右邊是密碼.
[users]
#harry = harryssecret
#sally = sallyssecret
test = test
下面就是將我們的數據(項目)導入到這個版本庫,以後就由版本庫管理我們的數據。我們的任何改動都回被版本庫記錄下來,甚至我們自己丟失、改錯數據時版本庫也能幫我們找回數據。
比如,我在 g盤下 下有個 work文件夾。在此文件夾上“右鍵 -> TortoiseSVN -> Import...” ,在彈出對話框的“URL of repository”輸入“svn://localhost/repos1/work”。在“Import message”輸入“導入XXX”作為注釋。
點 OK 後要求輸入帳號。我們在用戶名和密碼處都輸入 test 。完成後 work中的內容全部導入到了 svn://localhost/svn/repos1/work 。
我們看到在 e:\svn\repos1 沒有任何變化,連個 work 文件夾都沒有建立,唯一的變化就是e:\svn\repos1容量變大了。實際上我們源work中的內容已經導入 repos1 版本庫了,以一個壓縮的DB文件保存在服務覅段。源文件夾可以刪除了。
需要注意的是,這一步操作可以完全在另一台安裝了 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/repos1/work”,這樣我們就得到了一份 work 中內容的工作拷貝。
2、存入(check in)/提交(commit)
在工作拷貝中作出修改並提交:
在work工作拷貝中隨便打開一個文件,作出修改,然後“右鍵 -> SVN Commit... ”。這樣我們就把修改提交到了版本庫,版本庫根據情況存儲我們提交的數據。
在修改過的文件上“右鍵 -> TortoiseSVN -> Show Log” ,可以看到對這個文件所有的提交。在不同的 revision 條目上“右鍵 -> Compare with working copy”,我們可以比較工作拷貝的文件和所選 revision 版本的區別。
八、SVN與APACHE結合,使可以HTTP協議訪問,這部分來自所下載的服務器端的readme文檔,實踐通過。
1. Copy bin/mod_dav_svn.so and bin/mod_authz_svn.so to the Apache modules directory.
2. Add the Subversion/bin directory to the SYSTEM PATH and reboot so all the Subversion
support dll's are visible to the Apache service.
3. Edit the Apache configuration file (httpd.conf) and make the following changes:
3a. Uncomment the following two lines:
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
3b. Add the following two lines to the end of the LoadModule section:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
3c. Add the following to end of the file. Note: This Location directive is a
minimal example with no authentication directives. For other options,
especially authentication options, see the Subversion INSTALL file,
the Subversion Book, or the TortoiseSVN Manual.
<Location /svn>
DAV svn
SVNPath E:\svn\repos1
</Location>