svn建立倉庫並且設定使用者的許可權
1 Linux下建立svn倉庫
1.1 啟動SVN服務
svnserve -d -r /SVNRootDirectry
其中SVNRootDirectry是你的SVN 根目錄,例如192.85.1.2上的是:/SVN。-d 表示以後太服務方式執行,-r就表示root
1.2 建立倉儲
1.2.1 在SVN根目錄下建立版本倉庫
svnadmin create study
其中msm是版本倉庫的名字,倉庫建立好了以後會有出現一個倉庫名字的資料夾,資料夾下面有conf等幾個目錄和檔案,
如下圖。接下來就需要設定版本倉庫的許可權了。這裡說明一下:版本庫之間是獨立的。
檔案目錄如下:
其中conf資料夾下的目錄為:
1.2.2 增加使用者
修改conf資料夾下的authz檔案:
指令簡介:此配置檔案採用“基於路徑的授權”策略,中括號裡指定路徑,以下列出對各使用者的授權。
包括只讀r,讀寫rw。沒有列出的使用者,則不允許訪問。還可以對使用者分組,具體請參考svn手冊,以下是簡單例子:
<!--[if !supportLineBreakNewLine]--> 使用者組格式:
[groups]
<使用者組名> = <使用者1>,<使用者2>
其中,1個使用者組可以包含1個或多個使用者,使用者間以逗號分隔。
版本庫目錄格式:
[<版本庫>:/專案/目錄]
@<使用者組名> = <許可權>
<使用者名稱> = <許可權>
其中,方框號內部分可以有多種寫法:
/,表示根目錄(倉儲目錄)及以下。根目錄是svnserve啟動時指定的,我們指定/opt/svndata。這樣,/就是表示對全部版本庫設定許可權。
許可權主體可以是使用者組、使用者或*,使用者組在前面加@,*表示全部使用者。許可權可以是w、r、wr和空,空表示沒有任何許可權。
在[groups]下增加你的使用者組(記得等號前後留空格)
在[/]下面增加對使用者或者使用者組的許可權設定;最後如下圖:
1.2.3 修改使用者密碼
添加了使用者以後就需要給使用者設定密碼了,開啟conf/passwd檔案:
輸入以下內容:
[users]
<使用者1> = <密碼1> admin = admin
<使用者2> = <密碼2> username2 = password2
可以新增多個,此為使用者名稱密碼對。
取消[users]的註釋,並在下面加上你的使用者的密碼設定(記得等號左右的空格),如下圖:
1.2.4 對啟動SVN對使用者許可權、密碼的控制
需要啟動SVN對使用者許可權、密碼的控制,不然的話你就只能讀而不能寫了。
修改svnserve.conf檔案,
各引數功能在配置檔案的註釋中有說明, 此處配置如下:
[general]
anon-access = none # 使非授權使用者無法訪問
auth-access = write # 使授權使用者有寫許可權
password-db = /opt/svndata/repos/conf/passwd # 指明密碼檔案路徑
authz-db = /opt/svndata/repos/conf/authz # 訪問控制檔案
realm = /opt/svndata/repos # 認證名稱空間,subversion會在認證提示裡顯示,
並且作為憑證快取的關鍵字。
取消下面幾條前面的#號註釋就OK了:
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
重新啟動svn服務 :
啟動svn服務命令 svnserve -d -r /svn
如果報:svnserve: Can't bind server socket: Address already in use
解決辦法:
使用 “ ps -e|grep svnserve ” 找到服務對應程序編號 ,使用kill 命令,之後再使用啟動命令 ,如圖
使用地址訪問,如果出現“svnserve.conf:12: Option expected”,導致原因是:subversion讀取配置檔案
svnserve.conf時,無法識別有前置空格的配置檔案
修改改為
1.2.5 給SVN 倉儲空間中的 DB目錄分配寫許可權
cd /svn
sudo chmod 777 -R 倉儲名稱
不然不能提交檔案
2 SVN標準目錄結構
2.1 目錄結構概述
2.1.1 目錄 trunk
trunk是主分支,是日常開發進行的地方,一般包含 :
0-Src 原始碼
1-DevelopDoc 開發文件
2-ProductDoc 產品文件
3-ThirdPartyTools 第三方工具(外掛)
4-Testing 測試
5-DeployDoc 部署文件
2.1.2 目錄branches
ranches是分支。一些階段性的release版本,這些版本是可以繼續進行開發和維護的,則放在branches目錄中。
又比如為不同使用者客製化的版本,也可以放在分支中進行開發。
2.1.3 目錄 tags
tags目錄一般是隻讀的,這裡儲存階段性的釋出版本,只是作為一個里程碑的版本進行存檔。