SVN教程 -- 基於自己學習記錄
SVN教程 -- 基於自己學習記錄
1. 概述
a. 什麽是SVN?
Apache Subversion 通常被縮寫成 SVN,是一個開放源代碼的版本控制系統。相較於 git ,svn 是集中式版本控制系統。
SVN官網鏈接
b. 什麽是集中式版本控制系統?
集中式版本控制系統可以這樣理解:所有的源代碼都放在統一的服務器上,開發者從服務器下載項目組的最新代碼,進入自己的分支進行開發工作,提交代碼,最後再把自己的分支合並到服務器主分支上,更新服務器源代碼。由於源代碼最後都是放在服務器上的,服務器統一集中管理,所以我們把這種操作模式叫做集中式管理。
2. 安裝
這裏以 Ubuntu 14.04.5 LTS 安裝 SVN 為例,使用下列命令安裝 SVN:
sudo apt-get install subversion
安裝完成後輸入:
svn –-version
出現下列信息即安裝成功。
3. 配置 SVN 服務器
安裝好 SVN 後,我們便可以進行相關操作了。
在
/home/ubuntu/test
下創建一個 svn 文件夾。cd /home/ubuntu/test mkdir svn
在 svn 文件夾下創建一個 myCode文件夾倉庫。
svnadmin create /home/ubuntu/test/svn/myCode
創建完成後的目錄結構如圖所示:
創建完成後,我們需要配置一下 SVN。
在 conf 文件夾下有三個文件:
authz:用戶權限配置文件
passwd:用戶密碼配置文件
svnserve.conf:對 svn 訪問用戶的配置文件。
a. 打開 svnserve.conf:
vim svnserve.conf
修改其中的內容如下(將註釋 # 去掉):
anon-access = read auth-access = write password-db = passed authz-db = authz
b. 修改 authz ,在最末行加入:
[/] user = r user = rw
多用戶時可以設置用戶組:
在 [groups] 下面添加用戶組名和用戶名
[groups] mygroup = admin, user, xxx readGroup = xxx
設置用戶組讀寫權限:
[/] @mygroup = rw @readGroup = r
設置用戶組權限需要加@,單個用戶的時候不用加。
c. 設置密碼,打開 passwd 文件,在 [users] 下面添加賬號和密碼:
[user] admin = admin user = 123456 xxx = xxx
格式如下:
用戶名 = 密碼
啟動 svn 服務器。
svnserve -d -r /home/ubuntu/test/svn/myCode
當回車後沒有返回結果時便說明啟動成功,如果顯示錯誤則需重新配置 svn。
4. SVN 項目的導入導出及使用
導入本地代碼到服務器。
svn import /home/ubuntu/test/love_source svn://localhost/mycode/love_source --username=admin --password=admin -m "初始化導入"
從服務器下載代碼到本地,這裏就又是我的 Ubuntu 環境,你可以根據項目需要下載到不同的客戶端,只需將 localhost 改為 服務器的 ip 地址。
svn checkout svn://localhost/mycode --username=admin --password=admin /home/ubuntu/test/code
創建一個新文件夾並提交。
mkdir branches svn add branches svn commit -m "new folder"
創建新分支。
比如我們這裏的 love 文件夾是我們的主線,我們創建一個 love 的新分支並提交:
svn copy love/ branches/my_branch svn commit -m "add my_branch"
接著就可以切換到 my_branch 分支進行開發,比如這裏切換到新分支並創建 index.html 文件,將 index.html 加入版本控制並提交到版本庫中:
cd branches/my_branch/ vim index.html svn add index.html svn commit -m "add index.html"
合並分支。
切回 love 主線,合並分支 my_branch:
cd /home/ubuntu/test/code/love_source/love svn update svn merge ../branches/my_branch/
svn update
:將當前目錄及其子目錄下的所有文件都更新到最新版本。這裏可能會遇到
SVN MERGE: Unreadable path encountered; access denied
, 這是因為打開了匿名獲取權限造成的,將anon-access = none
就可以了。最後再將合並好的 love主線提交到版本庫中:
svn commit -m "add index.html"
至此,我們便完成了 SVN 的認識,安裝配置,基本使用的操作步驟。
5. 參考鏈接:
- <http://www.runoob.com/svn/svn-branch.html>
- <https://baike.baidu.com/item/SVN>
6. 常用命令:
Linux公社有篇文章寫的很好,這裏給出鏈接,可以參考下:
<https://www.linuxidc.com/Linux/2011-09/42347.htm>
SVN教程 -- 基於自己學習記錄