版本控制好工具備SVN、CVS、VSS等多種,他們的優劣在此不說明,請網絡參閱。html
SVN支持多種平臺,此文僅描述Windows平臺下使用說明。數據庫
SVN客戶包含客戶端和服務端。Windows平臺下客戶端使用TortoiseSVN,而服務端可以使用SubVersion或者VisualSVN Server。windows
二者區別以下:瀏覽器
而VisualSVN Serve集成了Subversion和Apache,省去了以上全部的麻煩。安裝的時候SVN Server已經封裝爲windws service,Apache服務器的配置也只是在圖像界面上,指定認證方式、訪問端口等簡單操做;另外,用戶權限的管理也是經過圖像界面來配置。服務器
本文描述內容針對SubVersion使用。由於要的就是原始、整潔和穩定,也更接近Linux使用方式。網絡
1、 下載安裝ide
1. 下載svn
注意,此3個軟件版本有可能不匹配。工具
2. 安裝測試
通常狀況下,Subversion服務器僅供局域網/本地使用,因此不須要Apache服務器。如需Apache服務器,能夠參考《Apache服務安裝及配置》。如出現沒法安裝msi文件,或許須要下載安裝新windows installer。
1> 服務器安裝
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選擇「中文」。
2、 建立版本庫
首先建立一個空文件夾,如D:\svnRoot,做爲全部版本庫的根目錄,便於集中管理全部版本庫。有兩種方式能夠建立版本庫:
第一種:TortoiseSVN方式建立。在D:\svnRoot目錄下,新建一個空文件夾,如D:\svnRoot\repose1,單擊鼠標右鍵,選擇「TortoiseSVN」à「Create repository here」完成建立
第二種:SubVersion方式建立。在開始菜單運行cmd進入DOS界面,輸入
svnadmin create D:\svnRoot\repose2 (建立版本庫)
完成版本庫建立。
3、 啓動SVN服務
在服務器DOS界面,輸入
svnserve.exe --daemon --root D:\svnRoot (啓動服務)
能夠寫成svnserve.exe -d -r D:\svnRoot。--daemon,表示svnserve將以守護進程方式運行,當關閉當前命令行窗口就會把svnserve stop了。使用SVN服務,命令行窗口須要服務器一直開着。咱們能夠經過svnserve -h來查看相關操做選項。
4、 配置用戶和權限
[users]
admin = 123 (用戶名 = 密碼,一行一個account)
( 無需重啓服務器,便可使用!若是提示「認證失敗」,請檢查此步驟的配置)
此部分進一步詳情可參考《SVN用戶和權限配置》。
5、 訪問版本庫
接下來能夠經過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版本庫。
6、 開始新的項目
選中待管理的文件所在文件夾,如E:\codes\NTPacket,単擊鼠標右鍵,選擇「TortoiseSVN」à「Import」à肯定,在身份認證彈出框,輸入passwd文件里正確的用戶名和密碼,便可上傳成功。
選擇一個空白地方或者新建一個空文件夾,単擊鼠標右鍵,選擇「SVN Checkout」,而後確認在身份認證彈出框,輸入passwd文件里正確的用戶名和密碼,便可簽出。
7、 服務自啓動
通常狀況,啓動SVN服務,須要每次執行步驟三,DOS窗口還必須一直開着。這樣很不方便,能夠把步驟三封裝成Windows Service自啓動。
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.注意路徑中的」號及\書寫正確。
net start svnlt (啓動svn版本庫服務)
net stop svnlt (中止服務)
sc delete svnlt (刪除服務,後需從新註冊svnlt服務)
8、 多版本庫與用戶權限配置
通常狀況,部門組織或開發團隊有多個項目須要版本控制,可多個項目共用以一個版本庫,也能夠每個項目對應一個版本庫,建議用後者。
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項目版本庫。
人員狀況(權限舉例):
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文件權限分配結果是:
4> a. 權限能夠分組,「g_vip = Lz, Wfh」,而後給組分配權限「@g_vip = rw」;b. 「* = 」表示任何人沒有權限;c. authz在本庫下時,[KTCoder:/Kernel] 中的根目錄能夠寫成[Kernel]
SubVersion權限示例:http://coldtear.iteye.com/blog/28440
5> 權限在文件目錄間父子繼承、聯合,以子目錄爲準。
9、 Apache服務安裝及配置
#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
<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 ‘而後輸入密碼兩次
10、 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
11、 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/