標籤:svn subversion 版本控制 版本發布 tortoisesvn
一、 SVN 簡介
Subversion(SVN) 是一個開源的版本控制系統, 也就是說 Subversion 管理著隨時間改變的資料。 這些資料放置在一個中央資料檔案庫 (repository) 中。這個檔案庫很像一個普通的檔案伺服器, 不過它會記住每一次檔案的變動。 這樣你就可以把檔案恢複到舊的版本, 或是瀏覽檔案的變動曆史。
SVN中經常用到的一些概念 :
(1)repository(原始碼庫):原始碼統一存放的地方;
(2)Checkout (提取):當你手上沒有原始碼的時候,你需要從repository checkout一份;
(3)Commit (提交):當你已經修改了代碼,你就需要Commit到repository;
(4)Update (更新):當你已經Checkout了一份原始碼, Update一下你就可以和Repository上的原始碼同步,你手上的代碼就會有最新的變更 ;
SVN的工作方式:
日常開發過程其實就是這樣的(假設你已經Checkout並且已經工作了幾天):Update(獲得最新的代碼) -->作出自己的修改並調試成功 --> Commit(大家就可以看到你的修改了) 。
如果兩個程式員同時修改了同一個檔案呢, SVN可以合并這兩個程式員的改動,實際上SVN管理原始碼是以行為單位的,就是說兩個程式員只要不是修改了同一行程式,SVN都會自動合并兩種修改。如果是同一行,SVN會提示檔案Confict, 衝突,需要手動確認。
用戶端軟體:
Windows下常用的用戶端軟體常用TortoiseSVN。它是一個免費的開源的用戶端。 :http://tortoisesvn.net/downloads.html
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/47/70/wKioL1P604-i-SluAALJcg565I0261.jpg" title="QQ20140825140406.png" alt="wKioL1P604-i-SluAALJcg565I0261.jpg" />
Subversion提供以下主要功能:
(1)目錄版本控制:
CVS 只能跟蹤單個檔案的曆史, 不過 Subversion 作了一個 “虛擬” 的版本控管檔案系統, 能夠依時間跟蹤整個目錄的變動。 目錄和檔案都能進資料列版本設定。
(2)真實的版本曆史:
自從CVS限制了檔案的版本記錄,CVS並不支援那些可能發生在檔案上,但會影響所在目錄內容的操作,如同複製和重新命名。除此之外,在CVS裡你不能用擁有同樣名字但是沒有繼承老版本曆史或者根本沒有關係的檔案替換一個已經納入系統的檔案。在Subversion中,你可以增加(add)、刪除(delete)、複製(copy)和重新命名(rename),無論是檔案還是目錄。所有的新加的檔案都從一個新的、乾淨的版本開始。
(3)自動認可:
一個提交動作,不是全部更新到了檔案庫中,就是完全不更新。這允許開發人員以邏輯區間建立並提交變動,以防止當部分提交成功時出現的問題。
(4)納入版本控管的中繼資料:
每一個檔案與目錄都附有一組屬性關鍵字並和屬性值相關聯。你可以建立, 並儲存任何你想要的Key/Value對。 屬性是隨著時間來作版本控管的, 就像檔案內容一樣。
(5)選擇不同的網路層:
Subversion 有抽象的檔案庫存取概念, 可以讓人很容易地操作新的網路機制。 Subversion 可以作為一個擴充模組嵌入到Apache HTTP 伺服器中。這個為Subversion提供了非常先進的穩定性和協同工作能力,除此之外還提供了許多重要功能: 舉例來說, 有身份認證, 授權, 在線壓縮, 以及檔案庫瀏覽等等。還有一個輕量級的獨立Subversion伺服器, 使用的是自訂的通訊協定, 可以很容易地通過 ssh 以 tunnel 方式使用。
(6)一致的資料處理方式:
Subversion 使用二進位差異演算法來異表示檔案的差異, 它對文字(人類可理解的)與二進位檔案(人類無法理解的) 兩類的檔案都一視同仁。 這兩類的檔案都同樣地以壓縮形式儲存在檔案庫中, 而且檔案差異是以兩個方向在網路上傳輸的。
(7)有效分支(branch)與標籤(tag):
在分支與標籤上的消耗並不必一定要與項目大小成正比。 Subversion 建立分支與標籤的方法, 就只是複製該項目, 使用的方法就類似於硬串連(hard-link)。 所以這些操作只會花費很小, 而且是固定的時間。
二、安裝以及使用過程:
1、在Linux環境下直接使用yum安裝即可:
[[email protected] ~]# yum install subversion
2、安裝好之後就可以配置一下相關的設定檔了、其實說配置主要是先建立一個原始碼庫(也叫版本庫),在哪裡建立都可以、建立版本庫使用的命令如下:
[[email protected] ~]# svnadmin create /data/www/svn
3、配置版本庫中的相關配置,設定使用者訪問的許可權,添加訪問使用者等,在建立的版本庫中我們可以在conf檔案夾中看到三個檔案,這三個檔案就是我們要修改的配置:
authz passwd svnserve.conf
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/47/70/wKioL1P61j-A01A4AAA4qtOpP-g229.jpg" title="QQ20140825141600.png" alt="wKioL1P61j-A01A4AAA4qtOpP-g229.jpg" />
(1)svnserve.conf: svn服務組態檔
(2)passwd: 使用者名稱口令檔案。
(3)authz: 許可權設定檔。
4、接下來我們修改這三個檔案;
[[email protected] conf]# vim svnserve.conf
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/47/6F/wKiom1P61e7Q__uAAAI3zMlsKOI089.jpg" title="QQ20140825141906.png" alt="wKiom1P61e7Q__uAAAI3zMlsKOI089.jpg" />
anon-access:控制非鑒權使用者訪問版本庫的許可權。
auth-access:控制鑒權使用者訪問版本庫的許可權。
password-db:指定使用者名稱口令檔案名稱。
authz-db:指定許可權設定檔名,通過該檔案可以實現以路徑為基礎的存取控制。
realm:指定版本庫的認證域,即在登入時提示的認證網域名稱稱(也就是版本庫的名稱)。若兩個版本庫的認證域相同,建議使用相同的使用者名稱口令資料檔案
[[email protected] conf]# vim passwd
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/47/6F/wKiom1P61qjTxtebAABQGf3Y3M4787.jpg" title="QQ20140825142224.png" alt="wKiom1P61qjTxtebAABQGf3Y3M4787.jpg" />
[[email protected] conf]# vim authz
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/47/71/wKioL1P62KrTB0a-AAEW-Uwxa7M143.jpg" title="QQ20140825142615.png" alt="wKioL1P62KrTB0a-AAEW-Uwxa7M143.jpg" />
如果版本庫有多個檔案夾,且都需要分配不同的許可權的話,只要再加[版本庫名:/檔案目錄]一項這個就可以了,有多少個用多少個,比如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/47/71/wKioL1P62i_SC8yLAAFIHRn2Zv0729.jpg" title="QQ20140825143236.png" alt="wKioL1P62i_SC8yLAAFIHRn2Zv0729.jpg" />
版本庫目錄,如果你建立的版本庫為/data/www/svn,那這裡就寫上你的目錄名,格式:[目錄名:/]
@後面跟上組名,再指定組的許可權,*=表示不在這個組內的所有組都沒有許可權;
好了,到這裡我們就可以啟動服務了;
[[email protected] ~]# svnserver -d -r /data/www/
-d:表示在後台運行;-r:指出要啟動並執行版本庫的路徑,如果你建立的版本庫路徑為/data/www/svn,那麼只需要指定/data/www就可以了、查看連接埠;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/47/71/wKioL1P62-SywiMUAAE3QYSjUTQ053.jpg" title="QQ20140825144003.png" alt="wKioL1P62-SywiMUAAE3QYSjUTQ053.jpg" />
OK、到這裡我們已經安裝好了,並配置好相關的許可權和使用者了,那麼接下來我們安裝windows用戶端來測試一下。
三、安裝windows用戶端SVN、到官網下載用戶端,順便把漢化包也一起下載下來:http://tortoisesvn.net/downloads.html
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/47/6F/wKiom1P62_vRyxR-AAKXuaNr-Os007.jpg" title="QQ20140825144503.png" alt="wKiom1P62_vRyxR-AAKXuaNr-Os007.jpg" />
下載好用戶端之後就一直next到底就可以了,這個不多說了,安裝好用戶端之後再安裝漢化包就可以了,安裝完漢化包就要設定一下,改成中文的去:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/47/71/wKioL1P63ffRb1PMAAFSOFzYJ3U573.jpg" title="QQ20140825144850.png" alt="wKioL1P63ffRb1PMAAFSOFzYJ3U573.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/47/70/wKiom1P63TmBcR6RAAKX_c8mJTM891.jpg" title="QQ20140825144934.png" alt="wKiom1P63TmBcR6RAAKX_c8mJTM891.jpg" />
好了之後我們就可以使用了,找到一個存放原始碼的目錄,右鍵空白處,選擇SVN檢出:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/47/70/wKiom1P63jTifT4-AAGdQAj-i3k144.jpg" title="QQ20140825145433.png" alt="wKiom1P63jTifT4-AAGdQAj-i3k144.jpg" />
點擊確定之後就會彈出輸入使用者名稱和密碼的對話方塊:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/47/71/wKioL1P63_3zGJ-xAAC-6yNzus8909.jpg" title="QQ20140825145731.png" alt="wKioL1P63_3zGJ-xAAC-6yNzus8909.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/47/70/wKiom1P635Hg2WEgAAGsZNwXMpw780.jpg" title="QQ20140825145841.png" alt="wKiom1P635Hg2WEgAAGsZNwXMpw780.jpg" />
好了,到這裡我們的SVN已經搭建完成了,這樣我們就可以完全的使用了。如果有什麼不明白的地方歡迎各種在下面留言,我會盡量解答各位的問題,謝謝。
本文出自 “溫水煮青蛙” 部落格,請務必保留此出處http://tanxw.blog.51cto.com/4309543/1544680
CentOS 6.3上SVN安裝過程及使用手冊