轉載于 http://blog.sina.com.cn/s/blog_6b94d5680101m7ah.html
Subversion (簡稱 svn )是近年來崛起的版本管理軟件,是 cvs 的接班人。目前,絕大多數 開源軟件 都使用 svn 作為代碼版本管理 軟件 。
????? TortoiseSVN 是 Subversion 版本控制系統的一個免費開源 客 戶端 ,可以超越時間的管理文件和目錄。
? apache
Subversion和apache,apr,apr-util的關系
作者:PCplayer 來自:我用Subversion - http://www.iUseSVN.com 時間:2007.3.8 修改時間:2007.10.26
很多朋友初次接觸Subversion時不是很理解subversion和apache的關系。
我在這里簡單說明一下svn服務器和客戶端的安裝說明。
服務器
subversion服務器是不需要apache的,但是可以使用apache,視具體情況來選擇。
1、如果只要通過file://或svn://來訪問,則不需要apache,只安裝svn即可,使用svnserve來作為服務。
2、如果你要建立一個可以通過http://或https://來訪問的版本庫服務器,則你需要使用apache。
基于apache配置,請看 http://bbs.iusesvn. com/thread-158-1-1.html ?。
客戶端
在windows下,不管你要訪問的是什么類型的服務器,只要安裝一個TortoiseSVN就可以了,開發者已經幫你搞定一切。
在類Linux系統下,如果你通過file://或svn://來訪問,則只要編譯安裝svn就可以,
如果通過http://訪問,則要同neon編譯,
如果通過https://訪問,則要同帶ssl支持的neon編譯,
不論怎樣,都要同apr和apr-util編譯。
neon、apr、apr-util也很容易獲得,目前發布的subversion代碼都會有一個叫做subversion-deps-xxx的文件,比如1.4.3的就是subversion-deps-1.4.3.tar.bz2
對于訪問國外網站比較慢的朋友,下載Subversion和客戶端,可以到? http://www.iUseSVN.com ?,因帶寬和流量有限,網站只對注冊用戶開放下載,這點有點麻煩,但是很值得,一是下載速度的確相當快,二是里面有很多熱于與大家交流的Subversion愛好者。
?
?
本文將介紹Windows下subversion作為Apache module的安裝方法。
安裝Apache
從? http://httpd.apache.org/ ?上下載Apache。最新版本的subversion僅支持 Apache 2.0.x,不支持Apache 1.3.x,所以請下載 Apache 2.0.x 版本。最新版本為 Apache 2.0.59。
2007-6-6追加: 另外subversion也不支持Apache 2.2.x版本,詳細原因請參考 這里 。
下載之后運行安裝程序進行安裝。安裝完畢之后,打開瀏覽器,輸入 http://localhost/,如果能夠看到 Apache 的歡迎畫面,即表示安裝成功。
安裝subversion
下載
從? http://subversion.tigris.org/ ?下載subversion,最新版本為1.3.1。這里我們選擇for Win32的zip版(svn-win32-1.3.1.zip)下載。
安裝
下載之后將 svn-win32-1.3.1.zip 解壓縮到 C:\ 下。為方便起見,將目錄名svn-win32-1.3.1修改為 svn。
然后我們需要建立一個保存subversion的版本庫的目錄。假設我們將此目錄命名為 C:\svnwork。
打開“控制面板”->“系統”->“高級”->“環境變量”,修改PATH變量,在其末尾添加 C:\svn\bin。
然后將 C:\svn\bin 下面的 mod authz svn.so、mod dav svn.so 兩個文件復制到 Apache 的 modules 目錄下。打開Apache的配置文件 httpd.conf,查找 LoadModule,將下面這一行之前的 # 去掉:
LoadModule dav_module modules/mod_dav.so
然后在LoadModule塊的末尾添加如下兩行:
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
之后在httpd.conf的末尾添加如下幾行:
<Location /repos> DAV svn SVNParentPath C:/svnwork </Location>
其中,repos 為從Web上訪問版本庫時所使用的路徑,而SVNParentPath后面的目錄即為版本庫目錄的位置。該指令告訴Apache,所有以 /repos 開頭的請求都交給subversion處理。
然后重新啟動計算機(原因請參見 這里 )。打開“控制面板”->“管理工具”->“服務”,查看Apache2服務的描述,如果描述變成類似于“Apache/2.0.54 (Win32) DAV/2 SVN/1.3.1”(包含SVN字樣)則說明安裝成功。
客戶端設置
subversion的用戶需要設置如下環境變量:
SVN_EDITOR="C:\Windows\notepad.exe"
當使用subversion進行導入、提交等操作時,subversion會調用該程序編輯提交說明。
建立subversion的版本庫
作為演示,我們建立一個版本庫。首先打開命令行提示符,進入C:\svnwork,輸入以下命令:
svnadmin create demo
然后嘗試向demo版本庫中添加代碼。假設我們在 D:\program\svntest 下面有一個名為 demo.c 的文件,那么我們輸入以下命令:
D: cd program svn import svntest http://localhost/repos/demo
其中 svntest 為目錄名。svn會調用文本編輯器來編輯說明文字,保存并關閉之后,svn會顯示:
Adding svntest\demo.c Committed revision 1.
然后可以通過以下命令察看保存到服務器上的文件:
svn list http://localhost/repos/demo demo.c
?
?
?
VisualSVN
?
?
?
?
?
VisualSVN Server的配置和使用方法 圖文
傳到SVN 服務器上的代碼存放的位置,在服務器安裝時,有一個可配置的地方,可配置;且上傳的代碼是被壓縮后存放在配置服務器時,指定的地方的;
?
?
SVN中trunk,branches,tags用法詳解
?
比如項目是proj,svn地址為svn://proj/,那么標準的svn布局是
svn://proj/|+-trunk+-branches+-tags
這是一個標準的布局, trunk為主開發目錄 , branches為分支開發目錄 , tags為tag存檔目錄(不允許修改) 。但是具體這幾個目錄應該如何使用,svn并沒有明確的規范, 更多的還是用戶自己的習慣 。
對于這幾個開發目錄,一般的使用方法有兩種。我更多的是從軟件產品的角度出發(比如freebsd),因為互聯網的開發模式是完全不一樣的。 1.第一種方法,使用trunk作為主要的開發目錄
一般的,我們的所有的開發都是基于trunk進行開發,當一個版本/release開發告一段落(開發、測試、文檔、制作安裝程序、打包等)結束后,代碼處于凍結狀態(人為規定,可以通過hook來進行管理)。此時應該基于當前凍結的代碼庫,打tag。當下一個版本/階段的開發任務開始,繼續在trunk進行開發。
此時,如果發現了上一個已發行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在開發的版本(Developing Version)無法滿足時間要求【新開發的東西還不能用】,這時候就需要在上一個版本上進行修改了。應該基于發行版對應的tag,做相應的分支(branch)進行開發。
例如,剛剛發布1.0,正在開發2.0,此時要在1.0的基礎上進行bug修正。
按照時間的順序
1.0開發完畢,代碼凍結?
基于已經凍結的trunk,為release1.0打tag
此時的目錄結構為
svn://proj/
+trunk/ (freeze)
+branches/
+tags/
+tag_release_1.0 (copy from trunk)?
2.0開始開發,trunk此時為2.0的開發版?
發現1.0有bug,需要修改,基于1.0的tag做branch
此時的目錄結構為
svn://proj/
+trunk/ ( dev 2.0 )
+branches/
+dev_1.0_bugfix (copy from tag/release_1.0)
+tags/
+release_1.0 (copy from trunk)?
在1.0 bugfix branch進行1.0 bugfix開發,在trunk進行2.0開發?
在1.0 bugfix 完成之后,基于dev_1.0_bugfix的branch做release等?
根據需要選擇性的把dev_1.0_bugfix這個分支merge回trunk(什么時候進行這步操作,要根據具體情況)?
這是一種很標準的開發模式,很多的公司都是采用這種模式進行開發的。trunk永遠是開發的主要目錄。
2.第二種方法,在每一個release的branch中進行各自的開發,trunk只做發布使用。
這種開發模式當中,trunk是不承擔具體開發任務的,一個版本/階段的開發任務在開始的時候,根據已經release的版本做新的開發分支,并且基于這個分支進行開發。還是舉上面的例子,這里面的時序關系是:
1.0開發,做dev1.0的branch
此時的目錄結構
svn://proj/
+trunk/ (不擔負開發任務 )
+branches/
+dev_1.0 (copy from trunk)
+tags/?
1.0開發完成,merge dev1.0到trunk
此時的目錄結構
svn://proj/
+trunk/ (merge from branch dev_1.0)
+branches/
+dev_1.0 (開發任務結束,freeze)
+tags/?
根據trunk做1.0的tag
此時的目錄結構
svn://proj/
+trunk/ (merge from branch dev_1.0)
+branches/
+dev_1.0 (開發任務結束,freeze)
+tags/
+tag_release_1.0 (copy from trunk)?
1.0開發,做dev2.0分支
此時的目錄結構
svn://proj/
+trunk/?
+branches/
+dev_1.0 (開發任務結束,freeze)
+dev_2.0 (進行2.0開發)
+tags/
+tag_release_1.0 (copy from trunk)?
1.0有bug,直接在dev1.0的分支上修復
?
外網訪問SVN服務器的方法
?
1、路由端口映射:
?????? 進入路由器管理管理界面-->轉發規則-->虛擬服務器
?????? 將端口3690(svn默認端口)和你的局域網IP(如192.168.1.104)映射,勾上“啟動”,保存,OK了。
2、測試:比如你的電信IP為:121.11.201.104;svn客戶端輸入地址:svn://121.11.201.104:3690/trunk
3、要讓svn客戶端能用http訪問,好像要apche之類的服務器配合。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
