SVN版本管理與大型代碼上線
SVN版本管理與大型代碼上線
一、SVN簡介
SVN是近年來崛起的非常優秀的版本管理工具,是一個開源的版本控制系統,開發的代碼版本,
這些數據位置放置在一個中央資料檔案庫,很想一個普通的文件服務器或者FTP服務器
與其他服務器不用的是,SVN會備份並記錄每個文件每一次的修改更新變動,
可以進行回滾操作,可以把任意一個時間點的檔案恢復到想要的某一個舊的版本,
也可以瀏覽指定文件的更新歷史記錄。SVN是一個非常通用的軟件系統,它常被用來管理程序源碼,但是它也可以管理任何類型的文件,
如文本,視頻,圖片等等
SVN相關站點
Subversion官網:
http://subversion.tigris.org/
http://subversion.apache.org/
svn客戶端:http://toroisesvn.net/
svn中文網站:http://www.iusesvn.com/
中文常見問題解答FAQ:http://subversion.apache.org/faq.zh.html
官方手冊:http://svnbook.red-bean.com/ 中英都有
SVN與Git的區別
集中代碼版本管理工具——SVN,應用產品開發,可以讓每個人協調,開發用的多
個人代碼版本管理工具——Git,只針對個人,與其他人無法配合
企業應用場景
SVN仍是當前企業的主流,Git正在發展,也許未來也會成為主流,小企業用的多
運維人員掌握版本管理
1、安裝,部署,維護,排障
2、簡單使用,很多公司都是由開發來管理,包括建立新倉庫和添加刪除賬號
3、對於版本控制系統,運維人員相當於開發商,開發人員是業主,運維搭建的系統為開發人員服務
SVN三種訪問方式
(1)獨立服務器訪問
訪問地址如:svn://svn.yunjisuan.org/sadoc;
(2)借助apache等http服務
訪問地址如:http://svn.yunjisuan.com/sadoc;
a,單獨安裝apache+svn(不要用)
b,CSVN(apache+svn)是一個單獨的整合的軟件,帶web界面管理的SVN軟件(3)本地直接訪問(例如:file://application/svndata/sadoc)
二、搭建SVN服務端
安裝配置SVN服務
#光盤安裝svn
[root@localhost ~]# yum -y install subversion
[root@localhost ~]# rpm -qa subversion
subversion-1.6.11-9.el6_4.x86_64
#建立svn版本庫數據存儲根目錄(svndata)及用戶,密碼權限目錄(svnpasswd)
mkdir -p /application/svndata #數據存儲根目錄
mkdir -p /application/svnpasswd #用戶,密碼權限目錄
建立項目版本倉庫
創建一個新的subversion項目yunjisuan,其實類似yunjisuan這樣的項目可以創建多個,
每個項目對應不同的代碼。這裏只創建一個項目為例:
svnadmin create /application/svndata/yunjisuan
tree /application/svndata/yunjisuan/
編輯SVN配置文件
cd /application/svndata/yunjisuan/conf/
cp svnserve.conf{,.bak}
vim svnserve.conf #修改12、13、20、27行內容
12 anon-access = none #禁止匿名訪問
13 auth-access = write #驗證訪問可寫
20 password-db = /application/svnpasswd/passwd #密碼文件位置
27 authz-db = /application/svnpasswd/authz #驗證文件位置
將authz文件和passwd文件拷貝到/application/svnpasswd下
cp /application/svndata/yunjisuan/conf/authz /application/svnpasswd/
cp /application/svndata/yunjisuan/conf/passwd /application/svnpasswd/
啟動SVN
[root@localhost conf]# svnserve --help #svn啟動命令幫助
svnserve: warning: cannot set LC_CTYPE locale
svnserve: warning: environment variable LANG is en
svnserve: warning: please check that your locale name is correct
usage: svnserve [-d | -i | -t | -X] [options]
Valid options:
-d [--daemon] : daemon mode #守護進程啟動(後臺)
-i [--inetd] : inetd mode
-t [--tunnel] : tunnel mode
-X [--listen-once] : listen-once mode (useful for debugging)
-r [--root] ARG : root of directory to serve #指定根目錄
-R [--read-only] : force read only, overriding repository config file
--config-file ARG : read configuration from file ARG
--listen-port ARG : listen port #監聽端口默認3690
[mode: daemon, listen-once]
--listen-host ARG : listen hostname or IP address #監聽IP
[mode: daemon, listen-once]
-T [--threads] : use threads instead of fork [mode: daemon]
--foreground : run in foreground (useful for debugging)
[mode: daemon]
--log-file ARG : svnserve log file
--pid-file ARG : write server process ID to file ARG
[mode: daemon, listen-once]
--tunnel-user ARG : tunnel username (default is current uids name)
[mode: tunnel]
-h [--help] : display this help
--version : show program version information
[root@localhost conf]# svnserve -d -r /application/svndata/ #警告可以忽略
[root@localhost conf]# netstat -antup | grep 3690 #svn默認3690端口
解決svnserve啟動時的警告問題
[root@localhost conf]# source /etc/sysconfig/i18n #啟用中文字符集
[root@localhost conf]# pkill svnserve
[root@localhost conf]# svnserve -d -r /application/svndata/
[root@localhost conf]# netstat -antup | grep 3690
passwd文件及密碼設置
#在/application/svnpasswd/passwd文件末尾追加如下內容:
[root@localhost conf]# tail -4 /application/svnpasswd/passwd
yunjisuan = 123123 #設置賬號密碼
benet = 123123 #設置賬號密碼
stu001 = 123 #設置賬號密碼
stu oo2 = 456 #設置賬號密碼
authz授權
註意:
1、權限配置文件中出現的用戶名必須已在用戶配置文件中定義(必須有這個用戶才行)
2、對權限配置文件的修改立即生效,不必重啟svn
權限配置說明
[groups]
zuming = xiaoming,xiaohong #用戶組名 = 用戶1,用戶2
#版本庫目錄格式:
[repository:/baz/fuz] #[<版本庫>:/項目/目錄]
@zuming = rw #<用戶組名> = <權限>
xiaoming = rw #<用戶名> = <權限>
#編輯authz配置文件進行授權,在authz末尾加入以下幾句代碼
[root@localhost conf]# egrep -v "#|^$" /application/svnpasswd/authz
[aliases]
[groups]
sagroup = stu001,stu002 #新增本行,定義組名
[yunjisuan:/] #定義授權的範圍
yunjisuan = rw #用戶單獨授權
benet = r #用戶單獨授權
@sagroup = r #組用戶授權
重啟svnserve
[root@localhost conf]# ps -ef | grep svn | grep -v grep
root 1261 1 0 17:16 ? 00:00:00 svnserve -d -r /application/svndata/
[root@localhost conf]# kill 1261
[root@localhost conf]# ps -ef | grep svn | grep -v grep
[root@localhost conf]# svnserve -d -r /application/svndata/
SVN版本管理與大型代碼上線