1. 程式人生 > >SVN版本管理與大型代碼上線

SVN版本管理與大型代碼上線

產品 listen warn admin 定義 無法 splay correct -h

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、1320、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版本管理與大型代碼上線