windows下的svn搭建步驟總結
1. 基本概念
1.1. 什麼是版本控制
版本控制就是資料倉儲,他可以記錄你對檔案的每次更改。
svn伺服器有2種運行方式:獨立伺服器和藉助apache。2種方式各有利弊。
svn儲存版本資料也有2種方式:BDB和FSFS。因為BDB方式在伺服器中斷時,有可能鎖住資料(我在搞ldap時就深受其害,沒法根治),所以還是FSFS方式更安全一點。
1.2. 什麼是Subversion
Subversion一個自由、開源版本控制系統,或者說是一種集中的分享資訊的系統,它的核心是版本庫,它儲存所有的資料,版本庫按照檔案樹形式儲存資料——包括檔案和目錄。任意數量的用戶端可以串連到版本庫,讀寫這些檔案。通過寫,別人可以看到這些資訊,通過讀資料,可以看到別人的修改。它管理檔案和目錄可以超越時間。一組檔案存放在中心版本庫,這個版本庫很像一個普通的檔案伺服器,只是它可以記錄每一次檔案和目錄的修改,這便使你可以取得資料以前的版本,從而可以檢查所作的更改。從這個方面看,許多人把版本控制系統當作一種“時間機器”。
Subversion可以通過網路訪問它的版本庫,從而使使用者可以在不同的電腦上使用。一定程度上可以說,允許使用者在各自的地方修改同一份資料是促進協作。進展可能非常的迅速,並沒有一個所有的改變都會取得效果的通道,由於所有的工作都有曆史版本,你不必擔心由於失去某個通道而影響品質,如果存在不正確的改變,只要取消改變。
一些版本控制系統也是軟體組態管理(SCM)系統,這種系統經過特定的精巧設計來管理原始碼,有許多關於軟體開發的特性—本身理解程式設計語言、或者提供構建程式的工具。然而,Subversion不是這樣一個系統,它是一個通用系統,可以管理任何類型的檔案集,對你這可能是原始碼,對別人,可能是一個貨物報價單或者是書稿等。
2. 安裝獨立伺服器SVNServer
2.1. 準備工作
2.2. 安裝服務端和用戶端
2.3. 建立版本庫
運行Subversion伺服器需要首先要建立一個版本庫(Repository)。版本庫可以看作是伺服器上集中存放和管理資料的地方。
開始建立版本庫。首先建立 e:\svn 空檔案夾作為所有版本庫的根目錄。然後,進入命令列並切換到subversion的bin目錄。輸入如下命令:
svnadmin create E:\svn\repos1
此命令在 E:\svn 下建立一個版本庫 repos1 。repos1 下面會自動產生一些檔案夾和檔案。
我們也可以使用 TortoiseSVN 圖形化的完成這一步:
先建立空目錄E:\svn\repos1
,注意一定是要空的。然後在 repos1
檔案夾上“右鍵->TortoiseSVN->CreateRepository here...”,然後可以選擇版本庫模式,這裡使用預設的FSFS即可,然後就建立了一系列檔案夾和檔案,同命令列建立的一樣。
2.4. 運行伺服器
此時 subversion 服務還沒有開始,只是通過它的命令建立了版本庫。繼續在剛才的命令視窗輸入:
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 --root e:\svn
然後TortoiseSVN中的版本庫瀏覽器URL縮減為:
svn://localhost/repos1
2.5. 配置使用者和許可權
用文字編輯器開啟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
2.6. 初始化匯入
下面就是將我們的資料(項目)匯入到這個版本庫,以後就由版本庫管理我們的資料。我們的任何改動都回被版本庫記錄下來,甚至我們自己丟失、改錯資料時版本庫也能幫我們找回資料。
比如,我在 e:\svn下有個 guestbook
檔案夾,裡面存放的是我編寫的代碼程式。在此檔案夾上“右鍵 -> TortoiseSVN -> Import...”
,在此之前要在命令列模式運行svnserve -d -r E:\svn\repos1這樣用戶端就可以訪問svn伺服器端下的檔案了。
在彈出對話方塊的“URL of repository”輸入“svn://localhost/repos1/guestbook”。在“Import message”輸入“匯入整個留言簿”作為注釋。
點 OK 後要求輸入帳號。我們在使用者名稱和密碼處都輸入 test 。完成後 guestbook 中的內容全部匯入到了svn://localhost/svn/repos1/guestbook 。
我們看到在 e:\svn\repos1 沒有任何變化,連個 guestbook 檔案夾都沒有建立,唯一的變化就是e:\svn\repos1容量變大了。實際上我們源guestbook中的內容已經匯入 repos1 版本庫了,源 guestbook 檔案夾可以刪除了。
需要注意的是,這一步操作可以完全在另一台安裝了 TortoiseSVN 的客戶機上進行。例如運行svnserve的主機的IP是133.96.121.22,則URL部分輸入的內容就是“svn://133.96.121.22”。
2.7. 基本操作流程
1、取出(check out)
取出版本庫到一個工作拷貝:
來到任意空目錄下,比如在f分區建立一個空檔案夾 f:\work 。“右鍵 -> SVN Checkout”。在“URL of repository”中輸入“svn://localhost/svn/repos1/guestbook”,這樣我們就得到了一份 guestbook 中內容的工作拷貝。
2、存入(check in)/提交(commit)
在工作拷貝中作出修改並提交:
在 guestbook 工作拷貝中隨便開啟一個檔案,作出修改,然後“右鍵 -> SVN Commit... ”。這樣我們就把修改提交到了版本庫,版本庫根據情況儲存我們提交的資料。
在修改過的檔案上“右鍵 -> TortoiseSVN -> Show Log”,可以看到對這個檔案所有的提交。在不同的 revision 條目上“右鍵 ->Compare with working copy”,我們可以比較工作拷貝的檔案和所選 revision 版本的區別。
3. ApacheSVN和Subversion的區別
Subversion的設計包括一個抽象的網路層,這意味著版本庫可以通過各種伺服器處理序訪問。理論上講,Subversion可以使用無限數量的網路通訊協定實現,目前實踐中存在著兩種伺服器。
· SVNServer:svnserve 是一個小的(也叫輕型的)、獨立伺服器,使用自己定義的協議和用戶端。(作者註:以下稱這種伺服器為“svnserver伺服器”,上面的安裝配置就是安裝svnserver伺服器。)
· ApacheSVN:Apache是最流行的web伺服器,通過使用 mod_dav_svn 模組,Apache可以訪問版本庫,並且可以使用戶端使用HTTP的擴充協議WebDAV/DeltaV進行訪問。
通過 Http 協議訪問版本庫是 Subversion 的亮點之一。ApacheSVN伺服器 具備了許多
svnserve伺服器沒有的特性,使用上更加靈活,但是有一點難於配置,靈活通常會帶來複雜性。
由於 Subversion 需要版本化的控制,因此標準的 Http 協議不能滿足需求。要讓 Apache 與 Subversion 協同工作,需要使用 WebDAV(Web-based Distributed Authoring andVersioning:)Web 分布式創作和版本控制)。
總結二
一伺服器端
1.下載Subversion並安裝
2.建立版本庫,在命令列運行:
svnadmin create E:/svn/doc
svnadmin create E:/svn/project
將建立兩個共用資料夾。
3.設定密碼和許可權。
開啟E:/svn/doc/conf下的svnserve.conf,把#password-db=
passwd前的#去掉,注意不要留空格,否則會報錯;如果預設所有帳戶都具有全部許可權,則不要把#authz-db= authz前的#去掉,否則要進入E:/svn/doc/conf下的authz檔案為每個帳戶設定許可權。
進入E:/svn/doc/conf下的passwd檔案,在[users]下增加sally=sallypsw,則為使用者sally建立了密碼sallypsw
4.啟動SVN伺服器
在命令列運行:
svnserve -d -r E:/svn
或者建立一個批次檔startsvn.bat,把上面內容拷進去。則伺服器的根目錄為E:/svn,下面有兩個共用資料夾。
5.匯入已有項目
svn import e:/tree svn://192.168.1.23/doc -m "importmassage"
參數說明
e:/tree 要匯入項目的目錄
svn://192.168.1.23/doc 要匯入的svn伺服器位址
-m "import massage" 參數也必須添加,不然他會提示“無法使用外部編輯器獲得日誌資訊”
6.匯出svn中項目
svn export svn://192.168.1.23/doc e:/etest
參數說明
svn://192.168.1.23/doc 要匯出的svn伺服器位址
e:/etest匯出項目放在e:/etest檔案夾裡面,e:/etest可不建立
匯出指定版本
svn export –r version svn://192.168.1.23/doc e:/etest 匯出指定版本號碼檔案。e:/etest可不建立。
Version 可以是數字
7.查看伺服器端svn目錄結構
svn list svn://192.168.1.23/project
二用戶端
使用TortoiseSVN訪問伺服器:
1. 下載並安裝TortoiseSVN。
2. 選擇一個要共用的檔案夾,如E:/localsvn,點右鍵選擇SVNCheckout,url裡面填svn://127.0.0.1/doc,則將此檔案夾與伺服器上的目錄E:/svn/doc對應,點確定。
3. 從伺服器得到更新:在E:/localsvn點右鍵選擇SVNUpdate,則從伺服器下載最新的更新。
4. 提交更新到伺服器:在E:/localsvn點右鍵選擇SVNCommit...,輸入使用者名稱和密碼,點確定,則從提交更新到伺服器。