SVN使用

一、SVN概述

1.SVN介紹

SVN是Subversion的簡(jiǎn)稱,是一個(gè)自由開源的版本控制系統(tǒng)。

Subversion將文件存放在中心版本庫(kù)里,這個(gè)版本庫(kù)很像一個(gè)普通的文件服務(wù)器,不同的是,它可以記錄每一次文件和目錄的修改情況,這樣就可以借此將數(shù)據(jù)恢復(fù)到以前的版本,并可以查看數(shù)據(jù)的更改細(xì)節(jié)

2.SVN基本概念


SVN使用圖解

問題:怎樣讓系統(tǒng)允許用戶共享信息,而不會(huì)讓他們因意外而互相干擾?

復(fù)制-修改-合并方案(Subversion默認(rèn)的模式)

在這種模型里,每一個(gè)客戶讀取項(xiàng)目配置庫(kù)建立一個(gè)私有工作副本——版本庫(kù)中文件和目錄的本地映射。

用戶并行工作,修改各自的工作副本,最終,各個(gè)私有的復(fù)制合并在一起,成為最終的版本,這種系統(tǒng)通常可以輔助合并操作,但是最終要靠人工去確定正誤。

3.SVN架構(gòu)


svn架構(gòu)

Subversion支持LinuxWindows,更多是安裝在Linux下。

源代碼版的解壓就能用

二進(jìn)制文件版解壓后要安裝

?svn服務(wù)器有2種運(yùn)行方式:

一.獨(dú)立服務(wù)器版本(源代碼版的解壓就能用)

二.借助apache運(yùn)行版本(二進(jìn)制文件版解壓后要安裝,安裝文件,根據(jù)不同的系統(tǒng)選擇)。?????????????

兩種方式各有利弊?

?svn存儲(chǔ)版本數(shù)據(jù)也有2種方式:

BDB(一種事務(wù)安全型表類型)和FSFS(一種不需要數(shù)據(jù)庫(kù)的存儲(chǔ)系統(tǒng))。因?yàn)锽DB方式在服務(wù)器中斷時(shí),有可能鎖住數(shù)據(jù),所以還是FSFS方式更安全一點(diǎn)(基于文件系統(tǒng))

二..使用篇(重點(diǎn))

SVN?:是一種集中式管理代碼的版本控制系統(tǒng),原理就是把代碼都保存到一個(gè)固定的位置(倉(cāng)庫(kù)),每次從這個(gè)位置拷貝更新代碼,進(jìn)行編輯;再把修改后的代碼提交到該目錄中。

SVN是基于客戶端和服務(wù)端(實(shí)際開發(fā)更多安裝是在linux下)的方案::

多人協(xié)作開發(fā)也是如此。因此需要一個(gè)服務(wù)器用于保存和管理庫(kù)文件(要保存的代碼等文件)的服務(wù)端——VisualSVN Server。實(shí)際開發(fā)服務(wù)端更多是安裝在Linux下。

還需要一個(gè)用戶的操作端,用于提交更新檢出代碼,

常用的有Eclipse的Svn插件,以及TortoiseSVN(小烏龜)。? ? ? ? ? ? ? ? ?

?SubVersion官網(wǎng):http://subversion.apache.org/

一.服務(wù)器端-VisualSVN安裝與配置

1,VisualSVN安裝與創(chuàng)建倉(cāng)庫(kù)



在開始運(yùn)行中錄入services.msc


這個(gè)服務(wù)要開啟

在開始運(yùn)行中查找visualSVN Server Manager就可以打開圖形化管理界面

二,VisualSVN創(chuàng)建工程目錄??


創(chuàng)建倉(cāng)庫(kù)

可以創(chuàng)建很多的倉(cāng)庫(kù),實(shí)際開發(fā)中一個(gè)倉(cāng)庫(kù)對(duì)應(yīng)著一個(gè)項(xiàng)目

可以在repository右擊選中properties(特性),給用戶授權(quán).

三..VisualSVN權(quán)限控制

創(chuàng)建用戶和用戶組


創(chuàng)建用戶


設(shè)置用戶訪問密碼

創(chuàng)建組

創(chuàng)建一個(gè)組,將開發(fā)人員分組,可以批量的為成員授權(quán).



分配權(quán)限

可以在repositories右擊選中properties(特性),給用戶授權(quán)

在給用戶修改權(quán)限的時(shí)候,先移出,在添加



二.客戶端-TortoiseSVN安裝與使用(重要)

它是一個(gè)基于windows系統(tǒng)的svn圖形化界面.

1.TortoiseSVN下載

2.TortoiseSVN安裝

安裝后需要重啟電腦.


3.Tortoise SVN常用操作

瀏覽倉(cāng)庫(kù)



正常情況下,在瀏覽倉(cāng)庫(kù)時(shí)會(huì)要求錄入username與password

我們可以清空svn客戶端的緩存



Checkout

檢出svn服務(wù)器上的項(xiàng)目


注意:檢出后會(huì)有一個(gè).svn隱藏目錄

Add:添加到svn服務(wù)器管理 ????

在檢出(checkout)的項(xiàng)目文件夾里面創(chuàng)建文件


這樣圖標(biāo)的文件代表它沒有由svn管理



Add只是加到了SVN管理 ?,這個(gè)代表的是它要添加到svn服務(wù)器

Commit:提交到了倉(cāng)庫(kù)中





Update

Update,它是更新操作,可以將svn服務(wù)器上的內(nèi)容更新到本地

更新到歷史版本

在實(shí)際的開發(fā)中,一般開發(fā)人員在寫完代碼的時(shí)候,自己測(cè)試可以通過,還要項(xiàng)目經(jīng)理審核才能commet,

更新到歷史版本一般是很少使用的

查看當(dāng)前日志


通過日志信息,右擊哪一個(gè)版本


也可以通過下面的方式來更新歷史版本



Delete(標(biāo)記刪除) ?用的不多

標(biāo)記刪除操作,本地文件會(huì)刪除,我們需要在它的父目錄(項(xiàng)目的倉(cāng)庫(kù))進(jìn)行提交,才能真正從服務(wù)器刪除

在重構(gòu)的時(shí)候,刪除一些無用的類和文件,會(huì)用到


導(dǎo)入導(dǎo)出(了解)

Import將本地資源導(dǎo)入到svn服務(wù)器

Export導(dǎo)出項(xiàng)目,和checkout的區(qū)別,它不存在.svn隱藏文件

三..客戶端-Eclipse SVN插件安裝與使用(次重要)

1.下載與安裝SVN插件

在我們資料中有一個(gè)svn插件,交它直接復(fù)制到eclipse安裝目錄下的dropins中

我們?cè)鯓涌梢灾纒vn插件安裝成功



2.Eclipse SVN插件使用

瀏覽倉(cāng)庫(kù),將eclipse工程導(dǎo)入到svn服務(wù)器



在svn資源庫(kù)研究


怎樣將eclipse中的工程導(dǎo)入到svn倉(cāng)庫(kù),可以在工程上右鍵



完成后,它其實(shí)沒有真正的導(dǎo)入,需要我們?cè)谶M(jìn)行提交才真正導(dǎo)入到svn倉(cāng)庫(kù)

Checkout? ,? ?導(dǎo)出? ,? ?導(dǎo)入



Add ?commit ?update更新到歷史版本


Eclipse的svn插件解決沖突


產(chǎn)生了沖突

我們?cè)诠こ躺蠄?zhí)行更新操作,就可以查看到?jīng)_突的文件


解決沖突




三 ..沖突問題與解決(重要)

多個(gè)用戶同時(shí)操作同一個(gè)文件時(shí),就可能產(chǎn)生沖突情況。


這個(gè)沖突產(chǎn)生后如何解決,我們可以采用手動(dòng)Merge,解決沖突后,重新commit.


HelloWorld.java它是服務(wù)器上的文件與本地文件合并

HelloWorld.java.mine本地修改后的文件

HelloWorld.java.r4修改前的文件

HelloWorld.java.r5對(duì)方修改后的文件


進(jìn)入后,選中代碼右擊,選擇操作,并且點(diǎn)擊合并后的代碼也能修改 ??,修改完成后save ,標(biāo)記為解決


操作圖解

注意:

在添加后只是在本地,需要提交到服務(wù)端才是真正的導(dǎo)入了svn倉(cāng)庫(kù).

五.擴(kuò)展篇

1.svn目錄規(guī)范

在visualSVN中創(chuàng)建倉(cāng)庫(kù)時(shí),可以選擇svn目錄結(jié)構(gòu)進(jìn)行創(chuàng)建



Trunk主干目錄,此目錄下的文件為基準(zhǔn)文件

Branches用于開發(fā)的分支目錄

Tags用于發(fā)布的版本目錄

假設(shè)有一個(gè)項(xiàng)目OA,我們完成了1.0版本,這時(shí)就可以打一個(gè)tags

后續(xù)我們?cè)贠A項(xiàng)目上添加一個(gè)新的模塊(及時(shí)通訊),我們就可以開一個(gè)分支,又有一個(gè)公司需要在我們OA基礎(chǔ)上添加財(cái)務(wù)管理模塊,我們又可以打一個(gè)分支。我們后續(xù)針對(duì)OA的1.0版本在升級(jí),我們不需要原來附加功能,就可以在原來的主干上繼續(xù)開發(fā),形成OA2.0版本,開發(fā)完成后就可以在打一個(gè)tags


2.打一個(gè)分支或標(biāo)記



分支的定義規(guī)則:

Project name+日期時(shí)間+功能點(diǎn)

Tags的定義規(guī)則

Project name+版本號(hào)

版本號(hào)定義為三段數(shù)字編號(hào)

xxx.xxx.xxx

第一個(gè):革命性的產(chǎn)品升級(jí)版

第二個(gè):新功能版

第三個(gè):修正bug

切換主干,分支與標(biāo)記



Tags一般是只讀,它代表的是發(fā)布的版本,所以我們不要進(jìn)行改變。

[if !supportLists]1.?[endif]主干與分支的合并

如果要將主干內(nèi)容合并到分支上,我們需要在分支的工作副本上操作。

如果要將分支的改變合并到主干上,我們需要在主干的工作副本上操作。

我們的需要是將分支的改變合并到主干上:



注意:在合并時(shí)要選擇在相應(yīng)的版本號(hào),合并后,可能會(huì)出現(xiàn)沖突,將沖突解決,commit就可以。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評(píng)論 6 540
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,275評(píng)論 3 428
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,368評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,736評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,919評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,481評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,235評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,427評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,656評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評(píng)論 1 294
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,160評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,380評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容

  • 為什么要使用SVN? 在程序的編寫過程中,每個(gè)程序員都會(huì)負(fù)責(zé)開發(fā)一個(gè)或多個(gè)模塊,且開發(fā)中會(huì)生成很多不同的版本, 這...
    shadow雨軒閱讀 1,455評(píng)論 0 2
  • SVN簡(jiǎn)介: 為什么要使用SVN? 程序員在編寫程序的過程中,每個(gè)程序員都會(huì)生成很多不同的版本,這就需要程序員有效...
    紀(jì)同學(xué)說閱讀 1,262評(píng)論 0 3
  • SVN版本:1.5 及更新版本 名詞說明: WC:Working Copy 你的工作區(qū) Versioned:受控的...
    日風(fēng)和閱讀 4,308評(píng)論 1 23
  • 前言: 1.本文講的是SVN版本控制工具常用功能,包括命令行和界面化操作2.如果想了解GIT使用方式,請(qǐng)移步這里 ...
    珍此良辰閱讀 17,647評(píng)論 10 57
  • 對(duì)于宗教信仰問題我一直以來的看法是:信則迷,不信則惘。任何宗教信仰,信到深處都是迷信,迷于宗教的規(guī)則理論而看不見其...
    楊大明白閱讀 258評(píng)論 0 1