標籤:svn 版本管理 專案管理 用戶端 入門
查看警告:show warnings; 備份庫結構:mysqldump 庫 -add-drop-table > 路徑
添加使用者:grant select,insert on 庫名 to ‘使用者名稱‘@‘172.8.8.8‘ identified by ‘密碼‘;flush privileges
所有許可權:grant all privileges on *.* to ‘name‘@‘%‘ identified by ‘mima‘; ---- 小 Q
-----------------------------------------------------------------------------------------------------
【簡介 流程 與營運 模式 優缺點】
SVN:subversion 一個跨平台的開源版本控制系統,管理著隨時間變化的各種資料,放置在中央版本庫(很像檔案伺服器或FTP伺服器),並且會備份檔案的每一次變動,方便有bug後復原版本。
儲存方式:
BDB--Berkeley DB,事物安全表類型,通過後台關聯式資料庫實現,伺服器中斷時有可能鎖資料;
FSFS--二進位檔案,用於檔案系統後端,可使用NFS等,不需要資料庫儲存,但兩種都沒有實體檔案。
工作流程:
① 在中央庫建立或從主幹複製一個分支;
② 從中央庫check out下這個分支的代碼;
③ 增加自己的代碼檔案,修改現存的代碼或刪除代碼的檔案;
④ commit代碼,假設有人在剛剛的分支上提交了代碼,你就會被提示代碼到期,你得先update一下然後再提交。,up代碼的時候如果出現了衝突,需要解決好衝突之後再進行提交。
舉例研發使用SVN的一天:
① 首先從SVN伺服器下載項目組最新代碼;
② 進入自己的分支進行開發,每隔一小時向伺服器提交自己的分支的代碼(方便回查);
③ 下班時間到了,把自己的分支合并到伺服器主分支上,一天的工作完成,並反映給伺服器;
營運必備:
營運不需要跟開發一樣經常去用SVN,但管理系統的營運人員需掌握
1、安裝、部署、維護、排障;
2、簡單實用,雖然大多公司都由開發來管理,比如建立倉庫、增刪帳號;
3、簡單理解,營運就是開發商,開發等人員就是業主,營運將服務搭建起來供開發使用。
訪問模式:
1、獨立伺服器訪問,如:svn://ip(網域名稱)/庫名
2、藉助http服務,例如:http://ip(網域名稱)/庫名 (單獨安裝apache+svn 或 安裝web介面管理的CSVN)
3、直接本地訪問,例如:file://application/svndata/庫名
優點 缺點:
1、每次提交都保留原始副本,SVN資料量會暴增;
2、若串連不到svn伺服器,基本都不可以工作;
3、在開源系統開發時,很多人啟動並執行並不好。
a、普及度高,使用簡單,介面化,而且教材多;
b、管理方便,邏輯清晰,適於開發人數不多的項目;
c、代碼一致性很高,集中式svn服務在某方面保證了資料的安全;
【配置安裝】
一般功能性的東西,直接yum安裝即可,除非有特殊需求,否則不需要編譯。
檢查:rpm -qa |grep subversion
安裝:yum install -y subversion
===========================================================
yum安裝rpm包後本地不清除的方法:sed -i ‘s#keepcache=0#keepcache=1#g‘ /etc/yum.conf
===========================================================
yum安裝後會有幾個命令:svn 兩下tab就出來了
svn svnadmin svndumpfilter svnlook svnrdump svnserve svnsync svnversion
首先建立資料存放區目錄,要根據線上環境需求搭建,我們是實驗就無所謂了;
mkdir -p /svn/{svndata,svnpasswd}
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/89/33/wKioL1gMSpfxbYMMAAEgVZX7iFg479.png-wh_500x0-wm_3-wmp_4-s_3410014176.png" title="1.png" alt="wKioL1gMSpfxbYMMAAEgVZX7iFg479.png-wh_50" />
啟動:svnserver -d -r /svn/svndata/
檢查:ps aux|grep svn lsof -i:3690 (連接埠可自訂)
重啟:pkill svnserver;svnserver -d -r /svn/svndata/
建立項目版本庫:
命令:svnadmin create /svn/svndata/sadoc //建立了sadoc項目庫,不能再用mkdir的思路了
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/89/33/wKioL1gMTK2QbMvLAADRGfkYYIg248.png-wh_500x0-wm_3-wmp_4-s_2072934807.png" title="2.png" alt="wKioL1gMTK2QbMvLAADRGfkYYIg248.png-wh_50" />
記錄下項目庫最初的樹狀圖,conf(設定檔)、db(版本記錄)、hook(鉤子)、lock(鎖)
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/89/36/wKiom1gMTg3jqJd6AABOBJe40EQ210.png-wh_500x0-wm_3-wmp_4-s_3977665683.png" title="3.png" style="width:500px;height:450px;" alt="wKiom1gMTg3jqJd6AABOBJe40EQ210.png-wh_50" height="450" width="500" vspace="0" hspace="0" border="0" />
【項目庫許可權問題】
cd /svn/svndata/sadoc/conf
cp svnserver.conf svnserver.conf_bak //操作前備份是營運的好習慣
sed -i ‘s/# auth-access = write/auth-access = write/g‘ svnserver.confsed -i ‘s/# aono-access =read/anon-access = none/g‘ svnserver.confsed -i ‘s%# password-db = passwd%password-db = /svn/svnpasswd/passwd%g‘ svnserve.confsed -i ‘s%# authz-db = authz%authz-db = /svn/svnpasswd/authz%g‘ svnserver.conf
預設訪問密碼,都是在各自項目庫的設定檔下,但如此可以方便管理,根據自己情況來,不強制。
cp passwd authz /svn/svnpasswd/
chmod 700 /svn/svnpasswd //安全考慮,當然還可以再次加密,根據自己來
vim /svn/svnpasswd/passwd //添加使用者,密碼
### This file is an example password file for svnserve.### Its format is similar to that of svnserve.conf. As shown in the### example below it contains one section labelled [users].### The name and password for each user follow, one account per line.[users]# harry = harryssecret# sally = sallyssecrettengxun = 123456 #等號前使用者名稱,等號後是純文字密碼docuser = 654321 #更改設定檔要重啟服務,更改authz和passwd則不用
vim /svn/svnpasswd/authz //設定使用者或組存取權限
### 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 #定義使用者組,使用者間逗號分隔[sadoc:/] #格式:[版本庫:/項目/目錄]------[/]表示根目錄下,即svn啟動時指定的/svn/svndata #[repo:/sadoc]表示對repo版本庫中的sadoc項目設定許可權@yanfa = rw #使用者組前要加@docuser = r #r,w,rw, ,分別表示讀,寫,讀寫,空;使用者必須在設定檔中定義過
重啟:pkill svnserver;svnserver -d -r /svn/svndata/sadoc/
【用戶端訪問】
SVN伺服器不是簡單將檔案一個一個儲存起來的,預設用的FSFS格式儲存增量內容,打包成一個檔案;
windows用戶端:
參考:http://jingyan.baidu.com/article/0aa223758081b788cc0d64e7.html
1、下載TortoiseSVN 和漢化包補丁,安裝;
2、安裝好後,建立對應項目的的檔案夾,右鍵選擇svn檢出(check.out),輸入url和儲存路徑,如
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/89/36/wKiom1gMV4mCGBizAAA1Fk3D9BE296.png-wh_500x0-wm_3-wmp_4-s_29783865.png" title="4.png" alt="wKiom1gMV4mCGBizAAA1Fk3D9BE296.png-wh_50" />
3、輸入使用者名稱,密碼;在檔案夾中放點檔案,和目錄什麼的;右鍵選擇SVN 提交(commit),如下
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/89/36/wKiom1gMWQ3xgmO9AABv9-Y5e7Y589.png" style="width:330px;height:292px;float:left;" title="5.png" alt="wKiom1gMWQ3xgmO9AABv9-Y5e7Y589.png" height="292" width="330" vspace="0" hspace="0" border="0" />
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/89/33/wKioL1gMWQ3QNIKOAABa3zI5rHA971.png" style="width:350px;height:292px;" title="6.png" alt="wKioL1gMWQ3QNIKOAABa3zI5rHA971.png" height="292" width="350" vspace="0" hspace="0" border="0" />
4、同步後,可以直接本地查看是否同步到服務端,右鍵選擇TortoiseSVN→版本瀏覽器(Repo Browser)
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/89/33/wKioL1gMWdKz25g1AAA7466Rb9o763.png" title="7.png" alt="wKioL1gMWdKz25g1AAA7466Rb9o763.png" />
5、每回使用時我們要右鍵svn 更新(update),確保內容最新。
註:刪除檔案也是如此操作,提交同步。
問:版本庫地址發生了變化,怎麼辦?
選擇檔案夾右鍵 TortoiseSVN→重新置放(Relocate),輸入新地址即可。
windows內,有一個svn預設目錄,包含三個認證檔案
svn.simple:包含基本認證方式的認證資訊,通過wincrypt API加密
svn.ssl.server:包含ssl伺服器憑證
svn.username:包含使用者認證的認證資訊
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/89/33/wKioL1gMW5rR4qRmAAA7PuiOEzU948.png" title="8.png" alt="wKioL1gMW5rR4qRmAAA7PuiOEzU948.png" />
Linux用戶端:
檢出項目庫: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=
更新項目庫:svn update svn://10.0.18.33/sadoc /data/svndata/sadoc --username=?
查看項目庫:svn ls svn://10.0.18.33/sadoc --username=? --password=? --verbose
添加檔案:svn add 檔案/目錄名
提交檔案:svn ci -m "commit data" //提交後,項目庫版本便升了一位元
(-m [--message] ARG : 指定日誌資訊ARG //不添加這個-m參數是會報錯的!)
項目目錄規範:
mkdir -p /data/svndata/sadoc/name/{trunk,branch,tag} //{主幹,分支,版本戳記}
commit:把工作複本的修改提交到版本庫;
add:將檔案或目錄乃如版本控制,下次提交時加入;
import:將未納入版本控制的檔案或目錄,提交到版本庫控制中。
納入項目庫:svn import /data/svndata/sadoc/name svn://10.0.18.33/sadoc -m "import"
附加:把主乾的東西拷貝到一個分支,不太常用
svn copy svn://10.0.18.33/sadoc/trunk svn://10.0.18.33/sadoc/branch/branch1 -m "create a branch"
【企業上線方案】
小型企業(圖左)
1、一般公司人員少,為了方便都隨時隨地更新,發布快;
2、經常不經測試人員測試就上線,拿使用者來測試,使用者體驗較差;
3、據統計網站中50%的故障都是和代碼有關,但都是營運人員承擔責任。
建議:
a、個人電腦搭建LNMP環境進行測試代碼,並有專職人員在測試伺服器測試;
b、規定代碼上線時間,比如三天一上線,滿足需求的同時也要有原則,一切為了客戶體驗度;
c、上線之前要備份,出了問題方便復原(新浪做法:先傳到臨時目錄,再直接mv過去,或做軟鏈)
d、上線操作由營運操作,否則開發隨意更新上傳,出了問題營運負責,這樣太不科學了。
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/89/36/wKiom1gMZjGR8xwbAAHYZBpuOFE469.png" title="8.png" style="width:350px;height:276px;" alt="wKiom1gMZjGR8xwbAAHYZBpuOFE469.png" height="276" width="350" vspace="0" hspace="0" border="0" />650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/89/34/wKioL1gMZluRmrpuAAEQuETrU-E517.png" title="9.png" style="width:320px;height:290px;" alt="wKioL1gMZluRmrpuAAEQuETrU-E517.png" height="290" width="320" vspace="0" hspace="0" border="0" />
中型企業(圖右)
擁有嚴格的流程,上線完全由營運負責,制定統一的上線指令碼、備份指令碼、復原指令碼,降低損失。
本文出自 “北冰--Q” 部落格,請務必保留此出處http://beibing.blog.51cto.com/10693373/1864741
SVN入門:流程簡介 安裝配置 項目庫配置 用戶端 上線方案