SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案
查看警告:show warnings;? 備份庫(kù)結(jié)構(gòu):mysqldump 庫(kù) -add-drop-table? >? 路徑
添加用戶:grant select,insert on 庫(kù)名 to '用戶名'@'172.8.8.8' identified by '密碼';flush privileges
所有權(quán)限:grant all privileges on *.* to 'name'@'%' identified by 'mima';????? ---- 小 Q
-----------------------------------------------------------------------------------------------------
【簡(jiǎn)介 流程 與運(yùn)維 模式 優(yōu)缺點(diǎn)】
SVN:subversion 一個(gè)跨平臺(tái)的開源版本控制系統(tǒng),管理著隨時(shí)間變化的各種數(shù)據(jù),放置在中央版本庫(kù)(很像文件服務(wù)器或FTP服務(wù)器),并且會(huì)備份文件的每一次變動(dòng),方便有bug后回滾版本。
存儲(chǔ)方式:
BDB--Berkeley DB,事物安全表類型,通過后臺(tái)關(guān)系數(shù)據(jù)庫(kù)實(shí)現(xiàn),服務(wù)器中斷時(shí)有可能鎖數(shù)據(jù);
FSFS--二進(jìn)制文件,用于文件系統(tǒng)后端,可使用NFS等,不需要數(shù)據(jù)庫(kù)存儲(chǔ),但兩種都沒有實(shí)體文件。
工作流程:
① 在中央庫(kù)創(chuàng)建或從主干復(fù)制一個(gè)分支;
② 從中央庫(kù)check out下這個(gè)分支的代碼;
③ 增加自己的代碼文件,修改現(xiàn)存的代碼或刪除代碼的文件;
④ commit代碼,假設(shè)有人在剛剛的分支上提交了代碼,你就會(huì)被提示代碼過期,你得先update一下然后再提交。,up代碼的時(shí)候如果出現(xiàn)了沖突,需要解決好沖突之后再進(jìn)行提交。
舉例研發(fā)使用SVN的一天:
① 首先從SVN服務(wù)器下載項(xiàng)目組最新代碼;
② 進(jìn)入自己的分支進(jìn)行開發(fā),每隔一小時(shí)向服務(wù)器提交自己的分支的代碼(方便回查);
③ 下班時(shí)間到了,把自己的分支合并到服務(wù)器主分支上,一天的工作完成,并反映給服務(wù)器;
運(yùn)維必備:
運(yùn)維不需要跟開發(fā)一樣經(jīng)常去用SVN,但管理系統(tǒng)的運(yùn)維人員需掌握
1、安裝、部署、維護(hù)、排障;
2、簡(jiǎn)單實(shí)用,雖然大多公司都由開發(fā)來管理,比如創(chuàng)建倉(cāng)庫(kù)、增刪賬號(hào);
3、簡(jiǎn)單理解,運(yùn)維就是開發(fā)商,開發(fā)等人員就是業(yè)主,運(yùn)維將服務(wù)搭建起來供開發(fā)使用。
訪問模式:
1、獨(dú)立服務(wù)器訪問,如:svn://ip(域名)/庫(kù)名
2、借助http服務(wù),例如:http://ip(域名)/庫(kù)名 (單獨(dú)安裝apache+svn 或 安裝web界面管理的CSVN)
3、直接本地訪問,例如:file://application/svndata/庫(kù)名
優(yōu)點(diǎn) 缺點(diǎn):
1、每次提交都保留原始副本,SVN數(shù)據(jù)量會(huì)暴增;
2、若連接不到svn服務(wù)器,基本都不可以工作;
3、在開源系統(tǒng)開發(fā)時(shí),很多人運(yùn)行的并不好。
a、普及度高,使用簡(jiǎn)單,界面化,而且教材多;
b、管理方便,邏輯清晰,適于開發(fā)人數(shù)不多的項(xiàng)目;
c、代碼一致性很高,集中式svn服務(wù)在某方面保證了數(shù)據(jù)的安全;
【配置安裝】
一般功能性的東西,直接yum安裝即可,除非有特殊需求,否則不需要編譯。
檢查:rpm? -qa |grep subversion
安裝:yum install? -y subversion
===========================================================
yum安裝rpm包后本地不清除的方法:sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
===========================================================
yum安裝后會(huì)有幾個(gè)命令:svn 兩下tab就出來了
svn? svnadmin? svndumpfilter? svnlook? svnrdump? svnserve? svnsync? svnversion
首先創(chuàng)建數(shù)據(jù)存儲(chǔ)目錄,要根據(jù)線上環(huán)境需求搭建,我們是實(shí)驗(yàn)就無所謂了;
mkdir? -p? /svn/{svndata,svnpasswd}
啟動(dòng):svnserver -d -r /svn/svndata/
檢查:ps aux|grep svn???? lsof -i:3690? (端口可自定義)
重啟:pkill svnserver;svnserver -d -r /svn/svndata/
創(chuàng)建項(xiàng)目版本庫(kù):
命令:svnadmin create /svn/svndata/sadoc?? //創(chuàng)建了sadoc項(xiàng)目庫(kù),不能再用mkdir的思路了
記錄下項(xiàng)目庫(kù)最初的樹狀圖,conf(配置文件)、db(版本記錄)、hook(鉤子)、lock(鎖)
【項(xiàng)目庫(kù)權(quán)限問題】
cd? /svn/svndata/sadoc/conf
cp svnserver.conf svnserver.conf_bak?? //操作前備份是運(yùn)維的好習(xí)慣
默認(rèn)訪問密碼,都是在各自項(xiàng)目庫(kù)的配置文件下,但如此可以方便管理,根據(jù)自己情況來,不強(qiáng)制。
cp? passwd authz? /svn/svnpasswd/
chmod? 700? /svn/svnpasswd?? //安全考慮,當(dāng)然還可以再次加密,根據(jù)自己來
vim? /svn/svnpasswd/passwd?? //添加用戶,密碼
vim? /svn/svnpasswd/authz ? //設(shè)置用戶或組訪問權(quán)限
###?This?file?is?an?example?authorization?file?for?svnserve. ###?Its?format?is?identical?to?that?of?mod_authz_svn?authorizationfiles. ###?As?shown?below?each?section?defines?authorizations?for?the?path?and ###?(optional)?repository?specified?by?the?section?name. ###?The?authorizations?follow.?An?authorization?line?can?refer?to: ###??-?a?single?user, ###??-?a?group?of?users?defined?in?a?special?[groups]?section, ###??-?an?alias?defined?in?a?special?[aliases]?section, ###??-?all?authenticated?users,?using?the?'$authenticated'?token, ###??-?only?anonymous?users,?using?the?'$anonymous'?token, ###??-?anyone,?using?the?'*'?wildcard. [aliases] #?joe?=?/C=XZ/ST=Dessert/L=Snake?City/O=Snake?Oil,?Ltd./OU=Research?Institute/CN=Joe?Average [groups] #?harry_and_sally?=?harry,sally #?harry_sally_and_joe?=?harry,sally,&joe #?[/foo/bar] #?harry?=?rw #?&joe?=?r #?*?= #?[repository:/baz/fuz] #?@harry_and_sally?=?rw #?*?=?ryanfa?=?a,b,tengxun????#定義用戶組,用戶間逗號(hào)分隔 [sadoc:/]?????????#格式:[版本庫(kù):/項(xiàng)目/目錄]------[/]表示根目錄下,即svn啟動(dòng)時(shí)指定的/svn/svndata#[repo:/sadoc]表示對(duì)repo版本庫(kù)中的sadoc項(xiàng)目設(shè)置權(quán)限 @yanfa?=?rw???????#用戶組前要加@ docuser?=?r???????#r,w,rw,?,分別表示讀,寫,讀寫,空;用戶必須在配置文件中定義過重啟:pkill? svnserver;svnserver -d -r /svn/svndata/sadoc/
【客戶端訪問】
SVN服務(wù)器不是簡(jiǎn)單將文件一個(gè)一個(gè)存儲(chǔ)起來的,默認(rèn)用的FSFS格式存儲(chǔ)增量?jī)?nèi)容,打包成一個(gè)文件;
windows客戶端:
參考:http://jingyan.baidu.com/article/0aa223758081b788cc0d64e7.html?
1、下載TortoiseSVN 和漢化包補(bǔ)丁,安裝;
2、安裝好后,創(chuàng)建對(duì)應(yīng)項(xiàng)目的的文件夾,右鍵選擇svn檢出(check.out),輸入url和保存路徑,如下圖
3、輸入用戶名,密碼;在文件夾中放點(diǎn)文件,和目錄什么的;右鍵選擇SVN 提交(commit),如下
4、同步后,可以直接本地查看是否同步到服務(wù)端,右鍵選擇TortoiseSVN→版本瀏覽器(Repo Browser)
5、每回使用時(shí)我們要右鍵svn 更新(update),確保內(nèi)容最新。
注:刪除文件也是如此操作,提交同步。
問:版本庫(kù)地址發(fā)生了變化,怎么辦?
選擇文件夾右鍵?TortoiseSVN→重新定位(Relocate),輸入新地址即可。
windows內(nèi),有一個(gè)svn缺省目錄,包含三個(gè)認(rèn)證文件
svn.simple:包含基本認(rèn)證方式的認(rèn)證信息,通過wincrypt API加密
svn.ssl.server:包含ssl服務(wù)器證書
svn.username:包含用戶認(rèn)證的認(rèn)證信息
Linux客戶端:
檢出項(xiàng)目庫(kù):svn co svn://10.0.18.33/sadoc? /data/svndata/sadoc --username=? --password=?
本地檢出:svn co file://svn/svndata/sadoc/
error:svn:Can't convert string from 'UTF-8' to native encoding? //解決如下
or:export LC_CTYPE="zh_CN.UTF-8"
or:export LC_CTYPE="zh_CN.GB2312"
or:export LANG="zh_CN.UTF-8" (變量名不同的話)
or:export LC_CTYPE="en_US.UTF-8" ;export LC_ALL=
更新項(xiàng)目庫(kù):svn update svn://10.0.18.33/sadoc? /data/svndata/sadoc --username=?
查看項(xiàng)目庫(kù):svn ls svn://10.0.18.33/sadoc? --username=? --password=? --verbose
添加文件:svn add 文件/目錄名
提交文件:svn ci -m "commit data"?? //提交后,項(xiàng)目庫(kù)版本便升了一位數(shù)
(-m [--message] ARG? : 指定日志信息ARG?? //不添加這個(gè)-m參數(shù)是會(huì)報(bào)錯(cuò)的!)
項(xiàng)目目錄規(guī)范:
mkdir -p /data/svndata/sadoc/name/{trunk,branch,tag}?? //{主干,分支,版本標(biāo)記}
commit:把工作副本的修改提交到版本庫(kù);
add:將文件或目錄乃如版本控制,下次提交時(shí)加入;
import:將未納入版本控制的文件或目錄,提交到版本庫(kù)控制中。
納入項(xiàng)目庫(kù):svn import /data/svndata/sadoc/name svn://10.0.18.33/sadoc -m "import"
附加:把主干的東西拷貝到一個(gè)分支,不太常用
svn copy svn://10.0.18.33/sadoc/trunk svn://10.0.18.33/sadoc/branch/branch1 -m "create a branch"
【企業(yè)上線方案】
小型企業(yè)(圖左)
1、一般公司人員少,為了方便都隨時(shí)隨地更新,發(fā)布快;
2、經(jīng)常不經(jīng)測(cè)試人員測(cè)試就上線,拿用戶來測(cè)試,用戶體驗(yàn)較差;
3、據(jù)統(tǒng)計(jì)網(wǎng)站中50%的故障都是和代碼有關(guān),但都是運(yùn)維人員承擔(dān)責(zé)任。
建議:
a、個(gè)人電腦搭建LNMP環(huán)境進(jìn)行測(cè)試代碼,并有專職人員在測(cè)試服務(wù)器測(cè)試;
b、規(guī)定代碼上線時(shí)間,比如三天一上線,滿足需求的同時(shí)也要有原則,一切為了客戶體驗(yàn)度;
c、上線之前要備份,出了問題方便回滾(新浪做法:先傳到臨時(shí)目錄,再直接mv過去,或做軟鏈)
d、上線操作由運(yùn)維操作,否則開發(fā)隨意更新上傳,出了問題運(yùn)維負(fù)責(zé),這樣太不科學(xué)了。
中型企業(yè)(圖右)
擁有嚴(yán)格的流程,上線完全由運(yùn)維負(fù)責(zé),制定統(tǒng)一的上線腳本、備份腳本、回滾腳本,降低損失。
轉(zhuǎn)載于:https://blog.51cto.com/tengxiansheng/1864741
總結(jié)
以上是生活随笔為你收集整理的SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP单引号和双引号的区别
- 下一篇: 《理解 ES6》阅读整理:函数(Func