SVN入門:流程簡介 安裝配置 項目庫配置 用戶端 上線方案

來源:互聯網
上載者:User

標籤: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入門:流程簡介 安裝配置 項目庫配置 用戶端 上線方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.