歡迎和大家交流技術相關問題:
郵箱: jiangxinnju@163.com
博客園地址: http://www.cnblogs.com/jiangxinnju
GitHub地址: https://github.com/jiangxincode
知乎地址: https://www.zhihu.com/people/jiangxinnju
背景說明
作為一個團隊開發,公司長期以來的實踐證明,手工操作版本管理是非常不明智的,一來浪費人力,二來效率低下,三來容易犯錯。那么版本管理用什么工具好呢?
在開源世界中,CVS(ConcurrentVersions System)一直都是版本控制的首選。但是現在用戶有了另一個選擇,就是Subversion(SVN)。SVN是下一代版本控制系統,能替代 CVS,項目主頁是http://subversion.tigris.org。
SVN是一個自由、開放源碼、跨平台的版本控制系統。它是一個通用系統,可用來管理任何類型的文件,
其中包括程序源碼。
它的初始目標很明確,實現絕大部分CVS的已有功能;充分考慮現有的CVS用戶,在使用方式上模仿CVS,同時開發了一系列工具,使得基於CVS的項目能夠順利遷移到SVN上。和CVS相比,它有很多優點,例如目錄版本控制、不可分割的提交、一致的數據處理方式和更有效率的分支與標記等。
SVN有兩種運行方式,一種是基於Apache Http Server,另外一種是SVN Standalone Server。一般推薦使用基於Apache Http Server的SVN,這樣做幾個好處:
- 能使用WebDAV(Web-based Distributed Authoring and Versioning)協議
- 能使用瀏覽器作為客戶端工具瀏覽源碼倉庫
- 可以很容易的支持到SSPI(Security Support Provider Interface,Microsoft安全支持提供器接口即常說的Windows域認證)和LDAP(Lightweight Directory Access Protocol),這些都是Apache本身就支持的
- 能得到比較完善的Apache安全認證系統,比如 SSL加密連接
考慮到公司同事基本上一直都是在Windows下過日子,所以考慮在Windows平台下搭建SVN,並且使用Windows域用戶認證的方式管理SVN的權限配置,使用瀏覽器和TortioseSVN作為SVN的客戶端,以進一步降低使用、管理門檻。
配置流程
安裝配置域控制器
我用的是Windows2003企業版,配置域控制器比較簡單,就不多說了。
安裝Apache
到http://httpd.apache.com/下載最新版的Apache For Windows,我使用的版本是apache_2.0.52-win32-x86-no_ssl.exe,安裝時選擇以Windows服務方式運行。注意如果IIS已在運行,需要先關閉,或者更換端口。安裝完成后用瀏覽器打開http://127.0.0.1/看是否能看到Apache的測試頁。
安裝SubVersion
到http://subversion.tigris.org/下載最新版的SVN,我使用的版本是svn-1.1.4-setup.exe,安裝程序會提示將自動修改Apache的配置文件,不要相信它,安裝程序自動修改的並不完整,接下來一定要按下面的步驟重新檢查配置。
配置域用戶認證
1、檢查modules下是不是已經有了mod_dav_svn.so、mod_authz_svn.so和libdb42.dll三個文件,如果沒有表示SVN沒有安裝正常,需要重新安裝
2、打開confhttpd.conf文件
3、在httpd.conf中找到這三行:
LoadModule dav_fs_modulemodules/mod_dav_fs.so
LoadModule dav_svn_modulemodules/mod_dav_svn.so
LoadModule authz_svn_modulemodules/mod_authz_svn.so
把它們前面的注釋號#刪除
4、到http://tortoisesvn.tigris.org/mod_auth_sspi.zip下載最新版的SSPI模塊,我使用的版本是mod_auth_sspi/1.0.1,解開壓縮包后把其中的mod_auth_sspi.so文件放到modules目錄下
5、在httpd.conf中找到行“LoadModule auth_module modules/mod_auth.so”,在其前一行加入“LoadModule sspi_auth_module modules/mod_auth_sspi.so”
6、現在我們假定要在c:svn目錄中存放各種SVN文件庫,分別為repos1、repos2…
7、在httpd.conf文件的末尾加上
DAV svn
SVNParentPath c:/svn
AuthzSVNAccessFile c:/svn/accessfilesspi
Require valid-user
AuthType SSPI
AuthName "Subversion 文件庫"
SSPIAuth On
SSPIAuthoritative On
SSPIDomain owl-2003.owl.local
SSPIOfferBasic On
- "DAV svn"表示通過Apache Web Server根目錄下的svn子目錄可以訪問"SVNParentPathc:/svn"中定義的目錄下的SVN文件庫的內容;
- "AuthzSVNAccessFile c:/svn/accessfilesspi”表示"c:/svn/accessfilesspi"文件中定義了域用戶與文件庫資源權限控制的詳細信息
- "SSPIDomain owl-2003.owl.local"表示在我的機器上域控制器名稱為:"owl-2003.owl.local"
AuthzSVNAccessFile定義的權限控制文件舉例
#用戶分組,以逗號分隔;用戶名區分大小寫;域用戶用全稱,即DOMAINUserName
[groups]
admins = OWLAdministrator
developers = OWLwater
docs = OWLyouwater
#管理員組擁有所有權限
[/]
@admins= rw
#開發人員可以完全控制源程序
[/myrepos]
@developers = rw
#文檔人員可以完全控制文檔
[/docs]
@docs = rw
8、保存httpd.conf,並重啟Apache,隨便用一個瀏覽器打開http://127.0.0.1/svn/docs測試一下吧。注意用戶名輸入是大小寫敏感的,域用戶需要輸入全稱。
安裝TortioseSVN
到http://tortoisesvn.tigris.org/下載最新的TortioseSVN和中文包,我用的版本是TortoiseSVN-1.1.5-UNICODE_svn-1.1.4.exe、
LanguagePack_1.1.5_zh_CN.exe,TortioseSVN與Windows資源管理器集成在一起,重啟系統后就可以使用了,首先打開資源管理器,在隨意位置點擊右鍵,選擇TortioseSVN=>Setting,把語言改為簡體中文,確定后生效。
參考內容
- Apache管理手冊
- Subversion用戶手冊
- TortioseSVN用戶手冊