版本控制好工具有SVN、CVS、VSS等多種,他們的優劣在此不說明,請網絡參閱。
SVN支持多種平台,此文僅描述Windows平台下使用說明。
SVN客戶包含客戶端和服務端。Windows平台下客戶端使用TortoiseSVN,而服務端可使用SubVersion或者VisualSVN Server。
兩者區別如下:
- SubVersion服務需要封裝SVN Serve為Windows Service,才能自啟動;
- SubVersion控制權限,需要通過修改配置文件;
- SubVersion想通過瀏覽器訪問,需要安裝配置Apache。
而VisualSVN Serve集成了Subversion和Apache,省去了以上所有的麻煩。安裝的時候SVN Server已經封裝為windws service,Apache服務器的配置也只是在圖像界面上,指定認證方式、訪問端口等簡單操作;另外,用戶權限的管理也是通過圖像界面來配置。
本文描述內容針對SubVersion使用。因為要的就是原始、整潔和穩定,也更接近Linux使用方式。
一、 下載安裝
1. 下載
- 服務器:Setup-Subversion-1.8.0-1.msi
- 客戶端:TortoiseSVN-1.8.5.25224-win32-svn-1.8.8.msi
- Apache服務:httpd-2.2.25-win32-x86-openssl-0.9.8y.msi
注意,此3個軟件版本有可能不匹配。
2. 安裝
一般情況下,Subversion服務器僅供局域網/本地使用,所以不需要Apache服務器。如需Apache服務器,可以參考《Apache服務安裝及配置》。如出現無法安裝msi文件,或許需要下載安裝新windows installer。
1> 服務器安裝
- 雙擊Setup-Subversion-1.8.0-1.msi,一直下一步,完成svn服務端軟件安裝。
- 配置系統環境變量Path新增D:\Program Files\Subversion\bin(注意本文安裝路徑是D:\Program Files\Subversion)。
- 進入DOS界面,輸入svnserve.exe –version。以驗證查看服務器軟件安裝是否成功。
2> 客戶端安裝,雙擊TortoiseSVN-1.8.5.25224-win32-svn-1.8.8.msi,一直下一步,完成svn客戶端軟件安裝。本文安裝路徑D:\Program Files\TortoiseSVN。
3> 不習慣TortoiseSVN英文菜單界面的朋友,可以下載TortoiseSVN中文語言包安裝,如LanguagePack_1.8.4.24972-win32-zh_CN.msi,安裝完成后,在TotoriseSVNà SettingsàGeneralàLanguage選擇“中文”。
二、 創建版本庫
首先創建一個空文件夾,如D:\svnRoot,作為所有版本庫的根目錄,便於集中管理所有版本庫。有兩種方式可以創建版本庫:
第一種:TortoiseSVN方式創建。在D:\svnRoot目錄下,新建一個空文件夾,如D:\svnRoot\repose1,單擊鼠標右鍵,選擇“TortoiseSVN”à“Create repository here”完成創建
第二種:SubVersion方式創建。在開始菜單運行cmd進入DOS界面,輸入
svnadmin create D:\svnRoot\repose2 (創建版本庫)
完成版本庫創建。
三、 啟動SVN服務
在服務器DOS界面,輸入
svnserve.exe --daemon --root D:\svnRoot (啟動服務)
可以寫成svnserve.exe -d -r D:\svnRoot。--daemon,表示svnserve將以守護進程方式運行,當關閉當前命令行窗口就會把svnserve stop了。使用SVN服務,命令行窗口需要服務器一直開着。我們可以通過svnserve -h來查看相關操作選項。
四、 配置用戶和權限
- 打開版本庫D:\svnRoot\repose1\conf\svnserve.conf文件,把里面的被# 注釋的password-db = passwd,去掉前面的 # 注釋符,並且前面不能有空格。這樣將會使用confpasswd文件作為密碼數據庫。
- 修改密碼數據庫passwd,添加user:
[users]
admin = 123 (用戶名 = 密碼,一行一個account)
( 無需重啟服務器,即可使用!如果提示“認證失敗”,請檢查此步驟的配置)
此部分進一步詳情可參考《SVN用戶和權限配置》。
五、 訪問版本庫
接下來可以通過TortoiseSVN -> Repo-browser來查看版本庫:在點擊那個菜單項后彈出的URL對話框中輸入
svn://localhost/repos1 (訪問版本庫)
這樣就可以看見repos1版本庫的目錄結構了。其他電腦訪問需要把localhost改成本機IP地址,其他電腦只需要安裝TortoiseSVN客戶端即可。
注意:在此版本,本人測試先“svnserve.exe --daemon --root D:\svnRoot”啟動,再訪問“svn://localhost/repos1”,提示無法訪問。而是啟動“D:\svnRoot\repose1”,再“svn://localhost”訪問repose1版本庫。
六、 開始新的項目
- 添加新的文件到版本庫Import
選中待管理的文件所在文件夾,如E:\codes\NTPacket,単擊鼠標右鍵,選擇“TortoiseSVN”à“Import”à確定,在身份認證彈出框,輸入passwd文件里正確的用戶名和密碼,即可上傳成功。
- 簽出版本庫里面的項目Checkout
選擇一個空白地方或者新建一個空文件夾,単擊鼠標右鍵,選擇“SVN Checkout”,然后確認在身份認證彈出框,輸入passwd文件里正確的用戶名和密碼,即可簽出。
- 修改文件Commit及Update。Checkout到本地的文件,可以修改,修改后選中當前文件或其目錄,鼠標右鍵,彈出菜單多出“SVN Update”及“SVN Commit”, Commit提交此次修改,Update重新下載服務器文件至本地。
- 導出版本庫Export。checkout下載文件到本地后,與svn服務器有仍有狀態關聯,可以修改提交等。而export僅僅是下載文件到本地,之后與svn服務器沒任何關聯,修改后也無法提交。
七、 服務自啟動
一般情況,啟動SVN服務,需要每次執行步驟三,DOS窗口還必須一直開着。這樣很不方便,可以把步驟三封裝成Windows Service自啟動。
- 新建一個空bat文件,如svnSer.bat,輸入
sc create svnlt binpath= "\"D:\Program Files\Subversion\bin\svnserve.exe\" --service --root \"D:\SvnRoot\repose2\"" displayname= "Subversion Server" depend= Tcpip start= auto
說明:a. svnlt為服務名;b. 賦值=左邊沒空格,右邊有一個空格;c.注意路徑中的”號及\書寫正確。
- 雙擊svnSer.bat文件,完成Windows Service注冊。
- 啟動svnlt服務有兩種方式:第一種,重啟電腦,svnlt服務會自啟動;第二種,在DOS界面執行net start svnlt語句完成啟動。
net start svnlt (啟動svn版本庫服務)
net stop svnlt (停止服務)
sc delete svnlt (刪除服務,后需重新注冊svnlt服務)
八、 多版本庫與用戶權限配置
- 多版本庫結構
一般情況,部門組織或開發團隊有多個項目需要版本控制,可多個項目共用以一個版本庫,也可以每一個項目對應一個版本庫,建議用后者。
SVNRoot為根目錄,為MobilePlatform項目創建一個版本庫,為KTCoder項目創建另一個版本庫,項目KTCoder下有兩文件夾Kernel和Business。
1> 新建空目錄D:\SVNRoot;
2> cmd命令行,進入DOS界面執行svnadmin create D:\svnRoot\MobilePlatform創建版本庫MobilePlatform;
3> DOS界面執行svnadmin create D:\svnRoot\KTCoder創建版本庫KTCoder;
4> svnServe.exe –d –r D:\svnRoot啟動服務。TortoiseSVN Repository Browser 中URL欄輸入svn://localhost/MobliePlatform訪問MobilePlatform項目版本庫,svn://localhost/KTCoder訪問KTCoder項目版本庫。
- 用戶權限配置
人員情況(權限舉例):
- Lz,公司老總,分配只讀所有文檔的權限;
- Wfh,Zg,項目經理,分配自己管轄項目讀寫權限,及其他項目只讀權限;
- Lyk,KTCoder項目核心開發人員,Kernel模塊唯一開發者,Kernel讀寫,其他讀寫;
- Whx,KTCoder項目開發人員,Kernel模塊只讀,Business模塊讀寫;
- Dgy,MobilePlatform項目開發人員;
- Fyh,svn管理員。
1> 打開版本庫下的conf\svnserve.conf文件,刪除下面幾行的前面注釋符#和空格。MobilePlatform版本庫與KTCoder版本庫一致處理。
[general]
# anon-access = read à anon-access = none //匿名訪問,改成none
# auth-access = write à auth-access = write
# password-db = passwd à password-db = passwd //指定用戶密碼文件
# authz-db = authz à authz-db = authz //指定權限文件
可以指定上面兩個文件的路徑。
2> 打開版本庫下的KTCoder\conf\ passwd文件,添加
[users]
Lz = 123
Wfh = 123
Zg = 123
Lyk = 123
Whx = 123
Dgy = 123
Fyh = 123
3> 打開版本庫下的KTCoder\conf\ authz文件,添加
[groups]
g_vip = Lz, Wfh
[KTCoder:/]
@g_vip = rw
Fyh = rw
Lyk = r
Whx = r
* =
[KTCoder:/Kernel]
Lyk = rw
Fyh =
[KTCoder:/Business]
Whx = rw
此authz文件權限分配結果是:
- Zg,Dgy, KTCoder項目無任何權限;
- Lz ,Wfh,整個項目所有文件讀寫權限;
- Lyk,Kernel讀寫,其他所有文件只讀;
- Whx,Business讀寫,其他所有文件只讀;
- Fyh, KTCoder、Business目錄下文件讀寫,Kernel無權限。
4> a. 權限可以分組,“g_vip = Lz, Wfh”,然后給組分配權限“@g_vip = rw”;b. “* = ”表示任何人沒有權限;c. authz在本庫下時,[KTCoder:/Kernel] 中的根目錄可以寫成[Kernel]
SubVersion權限示例:http://coldtear.iteye.com/blog/28440
5> 權限在文件目錄間父子繼承、聯合,以子目錄為准。
九、 Apache服務安裝及配置
- 雙擊httpd-2.2.25-win32-x86-openssl-0.9.8y.msi文件開始安裝。
- 完成安裝后,打開瀏覽器,輸入地址http://localhost測試安裝是否成功。
- 我的電腦à屬性à高級à環境變量à系統環境變量Path新增“D:\Program Files\Apache Software Foundation\Apache2.2\bin”。
- 復制D:\Program Files\Subversion\bin下的so文件至D:\Program Files\Apache Software Foundation\Apache2.2\modules。
- 打開文件D:\Program Files\Apache Software Foundation\Apache2.2\conf\ httpd.conf找到下面兩行,去掉前面的注釋符#。
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
新增下面兩行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
- httpd.conf文件末,新增下一段代碼
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:/SVNRoot
</Location>
在瀏覽器中輸入http://localhost/svn/可訪問svnRoot下所有版本庫文件。
- 如果需要啟用用戶驗證及其權限分配,添加如下
<Location /svn>
DAV svn
SVNListParentPath on ‘如注銷,則無法訪問
SVNParentPath D:/SVNRoot
AuthzSVNAccessFile D:/SVNRoot/myAccess
#Satisfy Any ‘不認證時是否顯示一級目錄
AuthType Basic
AuthName "SubVerion LTong"
AuthUserFile D:/SVNRoot/myUser
Require valid-user
</Location>
- 權限文件
權限文件myAccess與SubVersion版本庫權限文件配置格式一致。
- 用戶密碼文件
用戶密碼文件與SubVersion版本庫用戶文件格式不一致,需要DOS下
htpasswd –cb myUser admin ‘第一次創建用戶文件
然后輸入密碼兩次,創建myUser后,可以新增用戶
Htpasswd myUser fu ‘然后輸入密碼兩次
十、 Eclipses vn插件
- 安裝
http://welcome66.iteye.com/blog/1845176
- 使用
http://www.cnblogs.com/dongritengfei/archive/2010/03/03/1677308.html
http://subclipse.group.iteye.com/group/wiki/1619-subclipse-getting-started-guide-and-reference-b
十一、 Visual Studio2005 svn插件
- 安裝
- 使用
http://blog.csdn.net/panderman/article/details/7707785
http://haner0926.blog.163.com/blog/static/2184154820071129111018599/
http://blog.163.com/haohengzhen@126/blog/static/76137910201211093727571/
