SVN和Tortoise基礎(chǔ)培訓(xùn).ppt_第1頁
SVN和Tortoise基礎(chǔ)培訓(xùn).ppt_第2頁
SVN和Tortoise基礎(chǔ)培訓(xùn).ppt_第3頁
SVN和Tortoise基礎(chǔ)培訓(xùn).ppt_第4頁
SVN和Tortoise基礎(chǔ)培訓(xùn).ppt_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、SVN版本管理初級(jí)培訓(xùn),目錄,SVN的基本概念 在TortoiseSVN中使用的SVN 在Eclipse中使用SVN 分支和標(biāo)簽,為什么要進(jìn)行版本控制,是否發(fā)生過這樣的情況: 當(dāng)你在修改一個(gè)文件時(shí),其他人也在修改這個(gè)文件?而你是否因此丟失過自己所作的修改呢? 是否曾經(jīng)保存完一個(gè)修改,然后又想把個(gè)文件恢復(fù)到修改以前的狀態(tài)?是否曾經(jīng)希望能夠看到一個(gè)文件以前某個(gè)時(shí)間點(diǎn)的狀態(tài)? 是否曾經(jīng)在項(xiàng)目中發(fā)現(xiàn)了一個(gè) BUG,然后想調(diào)查它是什么時(shí)候產(chǎn)生的? 你是否在一個(gè)團(tuán)隊(duì)中工作?,如果這些問題中的任何一個(gè)回答“是”的話 那么你肯定需要考慮版本控制 請(qǐng)集中精力繼續(xù)后續(xù)的培訓(xùn)。,Subversion相關(guān)軟件,基于S

2、ubversion和TortoiseSVN的版本控制系統(tǒng) Subversion:是一個(gè)開源的版本控制系統(tǒng),擁有CVS的大部分特征,并在CVS的基礎(chǔ)上有更強(qiáng)的擴(kuò)展,用來代替 CVS 系統(tǒng)。 TortoiseSVN:SVN的客戶端工具,和資源管理器完美集成,基于TortoiseCVS的代碼開發(fā),使用上和TortoiseCVS極為相似; Web瀏覽器 目前公司的版本庫基于Apache服務(wù)器運(yùn)行,可在瀏覽器中查看授權(quán)過的版本庫的信息。,使用SVN之前需要了解的第一個(gè)概念,版本庫( Repository ) SVN的核心是版本庫,儲(chǔ)存所有的數(shù)據(jù),版本庫按照文件樹形式儲(chǔ)存數(shù)據(jù)包括文件和目錄,任意數(shù)量的客戶

3、端可以連接到版本庫,讀寫這些文件。通過寫數(shù)據(jù),別人可以看到這些信息;通過讀數(shù)據(jù),可以看到別人的修改。 最特別的是 Subversion 會(huì)記錄版本庫中的每一次更改,不僅針對(duì)文件也包括目錄本身,包括增加、刪除和重新組織文件和目錄。,使用SVN之前需要了解第二個(gè)概念,版本模型 鎖定-修改-解鎖 方案 復(fù)制-修改-合并 方案:在這種模型里,每一個(gè)客戶讀取項(xiàng)目版本庫建立一個(gè)私有工作副本版本庫中文件和目錄的本地映射。用戶并行工作,修改各自的工作副本,最終,各個(gè)私有的復(fù)制合并在一起,成為最終的版本,這種系統(tǒng)通??梢暂o助合并操作,但是最終要靠人工去確定正誤。 Subversion 怎么做? Subversi

4、on 缺省使用復(fù)制-修改-合并模型,大多數(shù)情況下可以滿足你的需求。然而,Subversion 1.2 后還是支持鎖定,如果你有不可合并的文件,或者你只是想實(shí)行強(qiáng)制管理策略,Subversion 仍然會(huì)提供你需要的特性。,SVN的部署、安裝和配置,公司的版本庫情況介紹 基于Apache運(yùn)行 各部門建立各自的版本管理服務(wù)器 質(zhì)量管理部統(tǒng)一進(jìn)行公司層面、部門層面和項(xiàng)目層面的版本管理 服務(wù)端的安裝配置:略 TortoiseSVN的安裝 如何獲取安裝文件: 從下載 從公司版本庫中獲取: 默認(rèn)安裝 安裝后與windows資源管理器完美集成,在服務(wù)器端創(chuàng)建版本庫,操作執(zhí)行人員:配置管理員 操作步驟: 在要?jiǎng)?chuàng)

5、建文件倉庫的位置(配置管理服務(wù)器中)創(chuàng)建目錄; 在目錄中創(chuàng)建版本庫: 命令行方式:svnadmin create D:SVNStore 使用TortoiseSVN:資源管理器的右鍵菜單TortoiseSVN在此創(chuàng)建版本庫,版本庫結(jié)構(gòu),操作執(zhí)行人員:配置管理員 Subversion的版本庫 在你的硬盤上創(chuàng)建一個(gè)空的文件夾 在那個(gè)文件夾下創(chuàng)建你想要的頂級(jí)目錄千萬不要放任何文件進(jìn)去!(暫時(shí)不明白為什么) 通過在那個(gè)文件夾右鍵,選擇TortoiseSVN 導(dǎo)入. 將這個(gè)結(jié)構(gòu)導(dǎo)入到版本庫中。這將導(dǎo)入臨時(shí)文件夾到版本庫的根目錄形成一個(gè)基本的版本庫布局。 Subversion的版本庫布局中,推薦建立:tru

6、nk,tags,branches三個(gè)目錄,他們不是必須的,但其設(shè)置貼合SVN功能,在使用中你將會(huì)發(fā)現(xiàn)這樣設(shè)置的好處。 Trunk:最新的代碼,相當(dāng)于CVS中的Head版本; Tags:Subversion使用過程中創(chuàng)建的標(biāo)簽; Branches:保存Subversion的工作分支。,TortoiseSVN使用-訪問版本庫,訪問方法:Subversion 可以通過多種方式訪問本地磁盤訪問,或各種各樣不同的網(wǎng)絡(luò)協(xié)議,但一個(gè)版本庫地址永遠(yuǎn)都是一個(gè) URL,URL 方案反映了訪問方法。,TortoiseSVN使用-checkout,“工作副本”的概念 一個(gè) Subversion 工作副本是你本地機(jī)器一

7、個(gè)普通的目錄,保存著一些文件,你可以任意的編輯文件,而且如果是源代碼文件,你可以像平常一樣編譯,你的工作副本是你的私有工作區(qū),在你明確的做了特定操作之前,Subversion 不會(huì)把你的修改與其他人的合并,也不會(huì)把你的修改展示給別人。 工作副本的結(jié)構(gòu) 普通的文件目錄 .svn文件夾:管理目錄,這個(gè)目錄里的文件能夠幫助 Subversion 識(shí)別哪一個(gè)文件做過修改,哪一個(gè)文件相對(duì)于別人的工作已經(jīng)過期了。,TortoiseSVN使用-識(shí)別重載圖標(biāo),一個(gè)新檢出的工作副本使用綠色的對(duì)勾做重載。表示 Subversion 狀態(tài)正常. 在你開始編輯一個(gè)文件后,狀態(tài)就變成了已修改,而圖標(biāo)重載變成了紅色感嘆號(hào)

8、。通過這種方式,你可以很容易地看出哪些文件從你上次更新工作副本后被修改過,需要被提交。 如果在更新的過程中出現(xiàn)了沖突,圖標(biāo)會(huì)變成黃色感嘆號(hào)。 如果你給一個(gè)文件設(shè)置了svn:needs-lock屬性,Subversion 會(huì)讓此文件只讀,直到你獲得文件鎖。具有這個(gè)重載圖標(biāo)的文件來表示你必須在編輯之前先得到鎖。 如果你擁有了一個(gè)文件的鎖,并且 Subversion 狀態(tài)是正常,這個(gè)重載圖標(biāo)就提醒你如果不使用該文件的話應(yīng)該釋放鎖,允許別人提交對(duì)該文件的修改。 這個(gè)圖標(biāo)表示當(dāng)前文件夾下的某些文件或文件夾已經(jīng)被調(diào)度從版本控制中刪除,或是該文件夾下某個(gè)受版本控制的文件丟失了。 加號(hào)告訴你有一個(gè)文件或目錄已

9、經(jīng)被調(diào)度加入版本控制。,TortoiseSVN-add,功能:將客戶端新建的文件添加到文件庫中,使其接受SVN的控制。 操作: 在資源管理器中打開取出到本地的工作復(fù)本,選中要添加的文件,點(diǎn)擊鼠標(biāo)右鍵,在彈出菜單中選擇“SVN 添加”; 在彈出窗口中選擇要添加的文件; 點(diǎn)擊OK,完成添加操作。,TortoiseSVN-commit,將你對(duì)工作副本的修改發(fā)送給版本庫,稱為提交修改。 提交之前要確保你的工作副本是最新的。 可以直接使用TortoiseSVN 更新,或者你可以先使用TortoiseSVN 檢查修改,看看哪些文件在本地或是服務(wù)器上已經(jīng)有了改動(dòng)。 提交文件與提交文件夾的區(qū)別 當(dāng)你提交文件時(shí)

10、,提交對(duì)話框只顯示你選擇提交的文件。 當(dāng)你提交文件夾,提交對(duì)話框?qū)⒆詣?dòng)選擇該文件夾中有改動(dòng)的所有文件。如果你忘記你建立了一個(gè)新文件,提交文件夾將使你可以找到它。,TortoiseSVN-delete,Delete-commit 找回已刪除的文件或目錄 刪除了文件或目錄并已經(jīng)提交該刪除操作到版本庫,那么一個(gè)常規(guī)的TortoiseSVN Revert已不能再將其找回。 使用日志對(duì)話框來查找出來刪除的版本和文件,打開數(shù)據(jù)倉庫的瀏覽器,并選擇該版本。 選擇刪除的文件或目錄,右鍵并選擇Context Menu Copy to working copy . ,然后選擇你的工作副本的路徑。 重載加號(hào)標(biāo)志表明

11、這個(gè)項(xiàng)目不僅僅是增加,而且還包含了歷史,Subversion記住了它是從哪個(gè)拷貝過來的。對(duì)這個(gè)文件運(yùn)行svn log會(huì)看到這個(gè)文件之前的歷史,換句話說,該文件不是新的,而是原先刪除的那一個(gè)文件的后代。,TortoiseSVN-update,獲取其他用戶對(duì)文件進(jìn)行的修改,與自己對(duì)文件進(jìn)行的修改進(jìn)行合并,保證本地的文件總是最新的。 說明: 在團(tuán)隊(duì)開發(fā)時(shí),更新保持團(tuán)隊(duì)成員之間的工作內(nèi)容一致,是一件很重要的工作。要注意經(jīng)常更新自己的工作復(fù)本,以保證自己能夠獲得最新的修改內(nèi)容。,TortoiseSVN-rename,對(duì)文件/目錄進(jìn)行Subversion控制下的改名操作,用此功能對(duì)文件/目錄進(jìn)行改名后文件

12、仍處于SVN的控制下并保持連續(xù)的變更信息。 注意:必須使用TortoiseSVN的重命名功能,直接在資源管理器中進(jìn)行重命名SVN無法監(jiān)控。,TortoiseSVN-Revert,撤銷本地所有未提交的修改。,TortoiseSVN-出現(xiàn)沖突,commit時(shí)出現(xiàn)“You have to update your work copy first.”紅色警告,說明版本庫中的此文件已經(jīng)被其他人修改了。 點(diǎn)“ok”按鈕退出。 執(zhí)行update 然后commit 如果修改與update得到的代碼不沖突,則自動(dòng)合并。,TortoiseSVN-出現(xiàn)沖突,如果update出現(xiàn)”O(jiān)ne or more files a

13、re in a conflicted state.“紅色警告,說明出現(xiàn)沖突,SVN自動(dòng)產(chǎn)生幾個(gè)文件記錄沖突。 filename.mine:你更新前的文件,沒有沖突標(biāo)志,只是你最新更改的內(nèi)容。(如果這個(gè)文件不可以合并,.mine文件不會(huì)創(chuàng)建,因?yàn)樗凸ぷ魑募嗤#?filename.rOLDREV:這個(gè)是你做更新操作以前的BASE版本,就是你在上次更新之后未作更改的版本。 filename.rNEWREV:這是Subversion從服務(wù)器剛剛收到的版本。這個(gè)版本就是版本庫的HEAD版本。,TortoiseSVN-出現(xiàn)沖突,手工解決沖突 選擇沖突文件-”Edit conficts” 出現(xiàn)merg

14、e界面,分為”Theirs”、”Mine”和”Merged”3部分,表示”別人修改的內(nèi)容”、 ”我修改的內(nèi)容”和”合并后的結(jié)果”3部分。目標(biāo)是將”別人修改的內(nèi)容”和”我修改的內(nèi)容”有取舍地合并起來,形成”合并后的結(jié)果”。 合并一般分為4種情況: 保留”我的修改”,舍棄”別人的修改”。鼠標(biāo)右鍵點(diǎn)擊Mine框的相應(yīng)行,點(diǎn)擊”Use this text block”。 舍棄”我的修改”,保留”別人的修改”。鼠標(biāo)右鍵點(diǎn)擊Theirs框的相應(yīng)行,點(diǎn)擊”Use this text block”。 同時(shí)保留”我的修改”和”別人的修改”,并將”我的修改” 放在前面。鼠標(biāo)右鍵點(diǎn)擊Mine框的相應(yīng)行,點(diǎn)擊”Use

15、 text block from mine before theirs”。 同時(shí)保留”我的修改”和”別人的修改”,并將”別人的修改”放在前面。鼠標(biāo)右鍵點(diǎn)擊Mine框的相應(yīng)行,點(diǎn)擊”Use text block from theirs before mine”。 合并完成,Ctrl+S存盤,退出。 選擇沖突文件-”Resolved”,標(biāo)記沖突已解決,系統(tǒng)自動(dòng)刪除因沖突而新建的文件。繼續(xù)進(jìn)行commit操作。,在Eclipse中使用SVN,下載插件 Subclipse 需要根據(jù) Eclipse 的版本下載相應(yīng)版本的 Subclipse 下載地址:

16、 也可以在公司的資料庫中下載 解壓縮后,文件夾結(jié)構(gòu)如下,在Eclipse中使用SVN-安裝,將該文件夾拷貝到Eclipse的plugin目錄下,并建立相應(yīng)的目錄結(jié)構(gòu),我們命名為subversion,最終的目錄結(jié)構(gòu)如下:,在Eclipse中使用SVN-安裝,配置文件 在eclipse/links目錄下,新建subversion.link文件,文件內(nèi)容只有一行:path=plugin/subversion 啟動(dòng)Eclipse,在“首選項(xiàng)小組”中就可以看到Subversion的插件選項(xiàng)了。,在Eclipse中使用SVN,配置完成后與SVN有關(guān)的幾個(gè)菜單項(xiàng) Team:最常用,與SVN版本庫互動(dòng)操作的大

17、部分命令菜單 Compare with:比較版本差異 Replace with:,在Eclipse中使用SVN-創(chuàng)建本地工作副本,新建資源庫 說明:每個(gè)項(xiàng)目的資源庫地址,將由配置管理員發(fā)送郵件給項(xiàng)目團(tuán)對(duì) Checkout 說明:在eclipse里checkout出來的,一定是該項(xiàng)目對(duì)應(yīng)資源庫,而不是整個(gè)項(xiàng)目的資源庫地址,否則會(huì)把太多非eclipse文件建立到本地的工作副本中。,在Eclipse中使用SVN-導(dǎo)入數(shù)據(jù),向版本庫中導(dǎo)入數(shù)據(jù) 是使用版本庫的第一個(gè)步驟,然而,這個(gè)步驟并不常用,因?yàn)槊總€(gè)項(xiàng)目只需要導(dǎo)入一次而已。 由配置管理員或者項(xiàng)目經(jīng)理完成,其他成員不需要關(guān)注。,在Eclipse中使用S

18、VN-常規(guī)操作,察看版本差異- Compare with-資源庫中的最新內(nèi)容 更新本地工作副本 開始工作,修訂本地工作副本 編譯文件通過 提交修改 重復(fù)上述操作 下班,分支和標(biāo)簽,使用場(chǎng)景:發(fā)布分支 項(xiàng)目組在開發(fā)到一定階段,產(chǎn)生一個(gè)假定穩(wěn)定版本提交測(cè)試。主干被拷貝到分支-branch/1.0。 開發(fā)者需要在測(cè)試假定穩(wěn)定版本時(shí)繼續(xù)開發(fā)新特性, 在/trunk上為版本2.0工作,新工作在軟件測(cè)試時(shí)不可以中斷。 如果測(cè)試中一個(gè)bug被發(fā)現(xiàn),修改提交測(cè)試的分支branch/1.0 。同時(shí)有規(guī)律地將修改合并到主干。 如果繼續(xù)開發(fā)中一個(gè)bug被發(fā)現(xiàn),修改主干,同時(shí)有規(guī)律地將修改合并到分支。 當(dāng)測(cè)試結(jié)束,/

19、branches/1.0被打上標(biāo)簽發(fā)布-/tags/1.0.0,這個(gè)標(biāo)簽被打包發(fā)布給客戶。 也許,繼續(xù)維護(hù)/branches/1.0。當(dāng)繼續(xù)在/trunk上為版本2.0工作,bug修正繼續(xù)從/trunk運(yùn)送到/branches/1.0,如果積累了足夠的bug修正,管理部門決定發(fā)布1.0.1版本,/branches/1.0被標(biāo)簽發(fā)布到/tags/1.0.1,打包發(fā)布。 整個(gè)過程隨著軟件的成熟不斷重復(fù):當(dāng)2.0完成,一個(gè)新的2.0分支被創(chuàng)建,測(cè)試、打標(biāo)簽和最終發(fā)布,經(jīng)過許多年,版本庫結(jié)束了許多版本發(fā)布,進(jìn)入了“維護(hù)”模式,許多標(biāo)簽代表了最終的發(fā)布版本。,分支和標(biāo)簽,特性分支 一個(gè)特性分支是一個(gè)臨時(shí)

20、分支,用來作復(fù)雜的修改而不會(huì)干擾/trunk的穩(wěn)定性,不象發(fā)布分支(也許要永遠(yuǎn)支持),特性分支出生,使用了一段時(shí)間,合并到主干,然后最終被刪除掉,它們?cè)谟邢薜臅r(shí)間里有用。,分支和標(biāo)簽,標(biāo)簽 分支被批準(zhǔn)打包發(fā)布,納入到標(biāo)簽下。許多標(biāo)簽代表了最終的發(fā)布版本。,分支和標(biāo)簽-”慵懶的拷貝”,Subversion的版本庫有特殊的設(shè)計(jì),當(dāng)你復(fù)制一個(gè)目錄,你不需要擔(dān)心版本庫會(huì)變得十分巨大Subversion并不是拷貝所有的數(shù)據(jù),相反,它建立了一個(gè)已存在目錄樹的入口,這個(gè)拷貝被可以被認(rèn)為是“懶的”,如果你提交一個(gè)文件的修改,只有這個(gè)文件改變了余下的文件還是作為原來文件的鏈接存在。 這就是為什么經(jīng)常聽到Subv

21、ersion用戶談?wù)摗傲畠r(jià)的拷貝”,與目錄的大小無關(guān)這個(gè)操作會(huì)使用很少的時(shí)間,事實(shí)上,這個(gè)特性是Subversion提交工作的基礎(chǔ):每一次版本都是前一個(gè)版本的一個(gè)“廉價(jià)的拷貝”,只有少數(shù)項(xiàng)目修改了。 當(dāng)然,拷貝與分享的內(nèi)部機(jī)制對(duì)用戶來講是不可見的,用戶只是看到拷貝樹,這里的要點(diǎn)是拷貝的時(shí)間與空間代價(jià)很小,所以你可以隨意做想要的分支。 當(dāng)然對(duì)于一個(gè)團(tuán)隊(duì)協(xié)作的項(xiàng)目來說,其分支的設(shè)定規(guī)則是需要經(jīng)過項(xiàng)目團(tuán)隊(duì)認(rèn)可、管理者審批的,否則會(huì)給其他人的協(xié)作帶來混亂。,TortoiseSVN-創(chuàng)建標(biāo)簽和分支,分支 版本控制系統(tǒng)的一個(gè)特性是能夠把各種修改分離出來放在開發(fā)品的一個(gè)分割線上。這條線被稱為分支。 標(biāo)簽 版本控制系統(tǒng)的另一個(gè)特性是能夠標(biāo)記特殊的版本(例如某個(gè)發(fā)布版本),所以你可以在任何時(shí)候重新建立一個(gè)特定的構(gòu)件和環(huán)境。這個(gè)過程被稱作標(biāo)記。 使用提醒 分支和標(biāo)簽的實(shí)質(zhì)是:建立了一個(gè)新的工作文件副本。 分支和標(biāo)簽意味著更多的維護(hù)版本,因此從配置管理角度來說,設(shè)置了只有經(jīng)過項(xiàng)目經(jīng)理審批才新建分支和標(biāo)簽。,TortoiseSVN-獲取標(biāo)簽和分支中的文件,第一個(gè)方法:checkout Checkout,在本地任意位置創(chuàng)建新的工作副本。對(duì)于已經(jīng)創(chuàng)建了工作副本的版本庫,不建議采用此操作。造成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論