




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Subversion版本控制系統(tǒng)的使用,福州大學(xué) 軟件學(xué)院 陳昱,為什么需要版本控制系統(tǒng)?,一個(gè)軟件項(xiàng)目的開展,是個(gè)分工合作的過程,單打獨(dú)斗的時(shí)代已經(jīng)過去。 當(dāng)你的代碼想要進(jìn)行大幅度修改,但是又沒有把握成功怎么辦?(把原來的版本復(fù)制一份做備份?) 當(dāng)某人寫了一個(gè)模塊的新代碼,其他成員如何獲得?(文件共享?QQ 傳過去?) 當(dāng)兩個(gè)成員想同時(shí)修改一個(gè)程序文件怎么辦?(怎么處理?誰說了算?),相信大家都經(jīng)常這么做吧,為什么需要版本控制系統(tǒng)?,程序員編寫程序的過程中,每個(gè)程序都會(huì)生成很多不同的版本 這就需要程序員能有效的管理代碼,在需要的時(shí)候可以迅速、準(zhǔn)確取出相應(yīng)的版本 任何需要管理信息頻繁改變的地方
2、都需要它,這就是 版本控制系統(tǒng) 的舞臺,版本控制,版本控制是管理信息變更的一門藝術(shù) 對于經(jīng)常對代碼改來改去的程序員來說,它已是不可缺少的工具 但版本控制軟件的用途并不僅限于軟件開發(fā)的領(lǐng)域。只要人們使用計(jì)算機(jī)來管理經(jīng)常變更的信息,就可以使用版本控制工具 代碼,文檔,系統(tǒng)配置文件,圖片,音樂,Outline,Subversion 簡介 Subversion 的安裝 版本控制中的基本概念 Subversion 常用功能講解,什么是 Subversion ?,什么是 Subversion?,Subversion 是一個(gè)自由/開源的版本控制系統(tǒng),前身為 CVS,簡稱 SVN SVN 將一組文件存放在中心
3、版本庫, 并記錄每一次文件和目錄的修改, 這個(gè)版本庫很像像 Windows 文件共享,其他人可以通過網(wǎng)絡(luò)訪問最新的文件 不同的是,它可以記錄每一次文件和目錄的修改情況!,什么是 Subversion?,Subversion 的版本庫可以通過網(wǎng)絡(luò)來訪問,允許不同的用戶在不同的計(jì)算機(jī)上使用,而且跨平臺 不同的使用者可以進(jìn)行協(xié)同工作;而且所有工作都是有記錄的,如果有錯(cuò)只要撤銷就可以 就像 “時(shí)間機(jī)器” ,可以回到過去任何時(shí)刻 就像擁有一個(gè)可以無限 Undo 的編輯器,Subversion 的體系結(jié)構(gòu),典型的 Client/Server 結(jié)構(gòu) 服務(wù)器存放版本數(shù)據(jù)庫(版本庫) 客戶端通過網(wǎng)絡(luò)訪問數(shù)據(jù),并
4、管理代碼的本地映射(稱為“工作副本”),Subversion 的安裝配置,Subversion 的安裝,安裝 Subversion 的最簡單的方法就是下載適合于你的操作系統(tǒng)的二進(jìn)制軟件包 apt-get install subversion SVN服務(wù)器端, 客戶端哪個(gè)先裝都可以 個(gè)人使用可以不需要安裝服務(wù)器端 Subversion 官網(wǎng)(配置服務(wù)器端需要) TortoiseSVN 客戶端,Subversion 的組件,常用的組件是 svn 和 svnadmin,有圖形化客戶端來實(shí)現(xiàn) svn 和 svnadmin 功能 svn 一個(gè)命令行
5、的客戶端程序 svnadmin 用來創(chuàng)建或者是修復(fù)版本庫的工具,svn 客戶端,Subversion 的組件,mod_dav_svn Apache 服務(wù)器的一個(gè)插件模塊,用來使其他人可以通過 http 協(xié)議訪問這個(gè)版本庫 svnserve 一個(gè)定制的、獨(dú)立的 Subversion 服務(wù)程序 可作為一個(gè)駐留進(jìn)程運(yùn)行或者是由 SSH 調(diào)用 使版本庫可以通過私有的 svn 協(xié)議訪問,TortoiseSVN 客戶端,Windows 系統(tǒng)客戶端 圖形化界面,集成了 svn 和 svnadmin 命令行工具的功能 集成于資源管理器功能中,使用方便,易于掌握 直接安裝,方法同一般軟件安裝相同 ,安裝 Tor
6、toiseSVN,有中文語言包 安裝完后進(jìn)行一下語言配置,安裝合并比較工具,合并比較工具 (Merge 軟件)在開發(fā)中用于查看兩個(gè)文件/目錄的差異 開源的 WinMerge TortoiseMerge( TortoiseSVN 自帶) 商業(yè)的 Araxis Merge Beyond Compare Professional,設(shè)置合并/比較工具,練習(xí),TortoiseSVN 已安裝在計(jì)算機(jī)上,請用右鍵調(diào)出 TSVN 的菜單,進(jìn)入 Setting 查看一下 今天先不用安裝額外的 Merge 工具,使用自帶的 TortoiseMerge Subversion 與 Araxis Merge ftp:/
7、,今天著重介紹 SVN 在跨平臺多人協(xié)作開發(fā)時(shí)的使用方法 在多個(gè)程序員管理同一段代碼的過程中,版本的管理顯得尤為重要,使用 SVN 可以方便的進(jìn)行分支、合并,記錄下所有的版本,Subversion 快速入門,單人的工作流程,創(chuàng)建版本庫 Create Repository 導(dǎo)入版本庫 Import 初始化的 Checkout,創(chuàng)建工作拷貝 開始工作 提交修改,基本術(shù)語:版本庫 Repository,Subversion 版本庫可以記錄寫入版本庫的每一次更改 這些更改包括對每一個(gè)文件的每一次修改 也可以是對目錄本身的修改,例如添加文件、刪除文件和對文件和目錄的重新命名 版本控制系統(tǒng)的核心:記錄和跟
8、蹤數(shù)據(jù)的修改歷史,基本術(shù)語:版本庫 Repository,就像一個(gè)網(wǎng)絡(luò)上的共享文件夾/數(shù)據(jù)庫 客戶端可以連接到版本庫,讀寫這些文件 通過寫, 別人可以看到你做的修改;通過讀數(shù)據(jù), 可以看到別人的修改,1、創(chuàng)建版本庫,創(chuàng)建一個(gè)空文件夾用于存放版本庫,比如 svnrepo 在文件夾上右鍵 TSVN - Create Repository here,訪問版本庫,Subversion 可以通過多種協(xié)議訪問版本庫 版本庫地址是一個(gè) URL 格式 比如 file:/C:/svnrepo/myproject/trunk 最簡單的方法莫過于通過 file:/ 訪問本機(jī)的版本庫,版本庫瀏覽器,在版本庫上右鍵,T
9、SVN-Repo-Browser 初始狀態(tài)下,倉庫為空,2、初始導(dǎo)入,導(dǎo)入前SVN版本庫的負(fù)責(zé)人要先規(guī)劃好版本庫的目錄結(jié)構(gòu),然后將初始代碼導(dǎo)入庫中 一般每個(gè)項(xiàng)目下面建立3個(gè)子目錄 trunk開發(fā)的主干 branches開發(fā)的分支 tags重要版本記錄 將項(xiàng)目最初的代碼放在 trunk 目錄下 注意,導(dǎo)入倉庫前先清理掉無關(guān)的文件,需要忽略的文件,在TSVN 的Setting的General中,可以設(shè)置需要忽略的文件以便SVN忽略掉一些臨時(shí)的、無用的文件 常被忽略的文件后綴有 *.opt *.ncb *.suo *.plg *.pch *.idb *.pdb *.scc *.obj Debug R
10、elease *.o *.bin *.out *.ilk *.aps *.clw *.bak 每個(gè)程序員可以根據(jù)自己的需要進(jìn)行修改忽略文件,上面只是使用 VC+ 編程時(shí)常用的一些忽略文件列表,初始導(dǎo)入,右鍵-TortoiseSVN-Import.,初始導(dǎo)入,完成之后目錄沒有任何變化 如果沒有報(bào)錯(cuò),數(shù)據(jù)就已經(jīng)全部導(dǎo)入到了剛才定義的版本庫中,3、檢出 Checkout,檢出的目的是創(chuàng)建本地的工作拷貝 記住從 trunk 子目錄導(dǎo)出,不要將整個(gè)版本庫導(dǎo)出 接下去就可以在工作拷貝上開始你的工作,基本概念:工作拷貝 Working Copy,一個(gè)Subversion工作拷貝是版本庫中的文件在本地計(jì)算機(jī)上
11、的一個(gè)拷貝 你的工作就在工作拷貝上進(jìn)行 一個(gè)用戶的工作拷貝往往對應(yīng)版本庫的一個(gè)子目錄,基本概念:工作拷貝 Working Copy,工作拷貝除了包含項(xiàng)目文件之外,還包含了一個(gè).svn目錄,叫做工作拷貝管理目錄 這個(gè)目錄里的文件能夠幫助 Subversion 識別哪一個(gè)文件被你做過修改,哪一個(gè)文件相對于別人的工作已經(jīng)過期了,檢出 Checkout,點(diǎn)擊右鍵-Checkout,在URL of repository中輸入剛才導(dǎo)入的URL路徑,這樣我們就得到了一份工作拷貝 注意:應(yīng)檢出 trunk 目錄下的內(nèi)容,進(jìn)行開發(fā)工作,檢出完成后,就可以在工作拷貝上進(jìn)行你的開發(fā)工作 當(dāng)開發(fā)的一個(gè)階段完成后,可以
12、將你做的修改重新放回版本庫 這就是提交操作,4、提交 Commit,將你在工作版本上所做的更新提交到版本庫中 注意:不需要把系統(tǒng)的臨時(shí)文件或是可以由程序再度生成的文件提交給版本庫 比如應(yīng)該提交的是 Timer.java,而不是Timer.class, Timer.java.bak,練習(xí),在機(jī)上創(chuàng)建一個(gè)版本庫 創(chuàng)建一個(gè)目錄作為初始導(dǎo)入目錄,在里面規(guī)劃好項(xiàng)目的目錄結(jié)構(gòu) 放入一些項(xiàng)目文件,完成初始導(dǎo)入 通過檢出操作生成一個(gè)工作拷貝 對工作拷貝中的文件做一些修改 提交所做的修改,然后繼續(xù)修改,更復(fù)雜的情況,如果你是自己完成項(xiàng)目,比如獨(dú)立做家庭作業(yè),那到這里就夠了 但如果是項(xiàng)目組合作,就有2個(gè)新的問題:
13、如何獲得別人對程序進(jìn)行的更新? 兩個(gè)人同時(shí)編緝一個(gè)文件怎么辦?,多人合作開發(fā)流程,多人協(xié)作時(shí)的工作流程,對工作拷貝做出修改 對代碼的修改 文件和目錄的修改(創(chuàng)建,刪除,拷貝,移動(dòng)/重命名)svn add,delete,copy,move 更新 Update svn update 合并沖突(如果有的話) 并測試 提交你的修改 Commit,對工作拷貝做修改,對代碼內(nèi)容的修改 對文件和文件夾的修改(創(chuàng)建,刪除,拷貝,移動(dòng)/重命名) 注意:拷貝,移動(dòng)和重命名要通過subversion 的客戶端進(jìn)行,不要用Windows 的資源管理器來進(jìn)行,否則之前的版本信息會(huì)丟失,對工作拷貝做修改,使用SVN刪除、
14、移動(dòng)與重命名文件夾的方法是在文件/文件夾上點(diǎn)右鍵進(jìn)行SVN操作,或直接在資源瀏覽器中使用右鍵拖放(會(huì)彈出SVN選項(xiàng)),或者在 repo-browser 中進(jìn)行 文件的刪除、移動(dòng)與重命名之前,必須保證工作目錄是最新的版本; 進(jìn)行這些操作之后,需要立刻進(jìn)行提交,更新 Update,檢查在你工作的這段時(shí)間內(nèi),版本庫中是否有別人所作的新修改 三種情況 別人和你修改的是不同文件 別人和你修改的是同一個(gè)文件的不同部分(比如他修改了開頭,你修改了結(jié)尾) 別人和你修改的是同一個(gè)文件的同一個(gè)部分 建議一個(gè)小時(shí)更新一次,更新 Update,如果版本庫在你提交之前有過更新,SVN會(huì)阻止你提交,讓你先進(jìn)行更新,處理沖
15、突,如果兩個(gè)人同時(shí)編輯一個(gè)文件,會(huì)發(fā)生什么情況? 別人和你修改的是同一個(gè)文件的不同部分(比如他修改了開頭,你修改了結(jié)尾) Subversion 會(huì)自動(dòng)幫你合并差異 別人和你修改的是同一個(gè)文件的同一個(gè)部分(沖突) 需要你自己動(dòng)手解決沖突,更新時(shí) Subversion 會(huì)自動(dòng)合并差異,手動(dòng)解決沖突,發(fā)生沖突的時(shí)候,SVN 會(huì)為你標(biāo)注出沖突的地方 遇到這種情況,只有人本身才有能力理解和做出合理的選擇。注意,軟件并不能自動(dòng)解決沖突 沖突的解決依賴于項(xiàng)目組內(nèi)部的交流,手動(dòng)解決沖突,進(jìn)行更新后,SVN會(huì)標(biāo)識出沖突的位置,基礎(chǔ)概念:修訂版本 Revision,每次對版本庫做一次修改,版本庫中的文件系統(tǒng)目錄都
16、會(huì)創(chuàng)建一種新的狀態(tài),叫做一個(gè)修訂版本 每一個(gè)修訂版本都被賦予一個(gè)唯一的自然數(shù),并且每一個(gè)修訂本的數(shù)字都比前一個(gè)要大。剛剛建立的版本庫的初始的版本是0,只包含一個(gè)空的根目錄。,基礎(chǔ)概念:修訂版本 Revision,Subversion 的修訂版編號是針對整個(gè)目錄樹的,而不是某一個(gè)獨(dú)立的文件 HEAD表示最新的修訂版本,手動(dòng)解決沖突,手工修改了沖突的地方后,刪掉沖突時(shí)的臨時(shí)文件,可以再次進(jìn)行提交,接下去,處理完沖突,就可以提交你的工作 然后就下班了 等所有人都下班了,計(jì)算機(jī)進(jìn)行 自動(dòng)構(gòu)建 自動(dòng)測試 自動(dòng)提交bug到缺陷跟蹤系統(tǒng) 自動(dòng)部署,敏捷開發(fā)相關(guān)技術(shù),版本控制 單元測試 持續(xù)集成 缺陷跟蹤 知
17、識共享,第二天,svn update 查看計(jì)算機(jī)提交的bug列表 開始新一天的工作 結(jié)束一天工作時(shí)記得 svn commit,搭建 SVN 服務(wù)器,進(jìn)行多人開發(fā)時(shí),開發(fā)組成員需通過網(wǎng)絡(luò)訪問版本庫 因此,必須搭建一個(gè)存放版本庫的服務(wù)器供大家共享 通??梢允褂?Apache 或是自帶的 svnserve.exe 搭建服務(wù)器 http 協(xié)議和 svn 協(xié)議,安裝 SVN 服務(wù)器,使用 VisualSvN Server 安裝時(shí)填入端口號和版本庫地址 注意不要安裝在含中文的路徑,訪問遠(yuǎn)程的版本庫,進(jìn)行多人開發(fā)的時(shí)候,就必須通過網(wǎng)絡(luò)協(xié)議 ( http或是 svn 等 ) 訪問版本庫,練習(xí),搭建 SVN 服
18、務(wù),將剛才所創(chuàng)建的 SVN 版本庫通過服務(wù)進(jìn)行共享 互相之間通過其他同學(xué)的 IP 訪問對方的版本庫 右鍵- TSVN-Repo Browser svn:/服務(wù)器IP,練習(xí),和旁邊的同學(xué)配合,以其中一人的機(jī)器作為服務(wù)器,導(dǎo)出服務(wù)器上的版本庫 模擬開發(fā)過程,兩人共同修改程序 模擬沖突的發(fā)生,實(shí)驗(yàn)解決沖突的過程,推薦閱讀資料,參考書目,使用Subversion進(jìn)行版本控制 http:/svnbook.red-,參考書目,Pragmatic Version Control using Subversion, 2nd Edition 版本控制之道 ,E-Book 下載,ftp:/,SVN 相關(guān)網(wǎng)站,Subversion 中文站 我用SVN ,SVN 相關(guān)網(wǎng)站,Sub
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 門市裝潢合同范本
- 門鎖購銷合同范本
- 心理沙盤合同范本
- 燈箱設(shè)計(jì)合同范本
- Polygodial-pyridazine-生命科學(xué)試劑-MCE
- BOC-1S-3R-3-aminocyclopentanecarboxylic-acid-1S-3R-3-tert-Butoxycarbonyl-amino-cyclopentanecarboxylic-acid-生命科學(xué)試劑-MCE
- AE9C90CB-生命科學(xué)試劑-MCE
- 4-Trifluoromethyl-nicotinic-acid-4-Trifluoromethyl-pyridine-3-carboxylic-acid-生命科學(xué)試劑-MCE
- 2025年窯爐、熔爐及電爐合作協(xié)議書
- 2025年智能電網(wǎng)配電設(shè)備合作協(xié)議書
- DG-TJ 08-2242-2023 民用建筑外窗應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 專項(xiàng)訓(xùn)練-解決問題訓(xùn)練(專項(xiàng)訓(xùn)練) 六年級下冊數(shù)學(xué)人教版
- 心肺復(fù)蘇技能操作考核表
- SHT 3060-2013 石油化工企業(yè)供電系統(tǒng)設(shè)計(jì)規(guī)范
- 2024年俄羅斯高空作業(yè)平臺車行業(yè)應(yīng)用與市場潛力評估
- 【中考真題】2024年河南省普通高中招生考試歷史試卷(含答案)
- 2024版年度經(jīng)濟(jì)法基礎(chǔ)完整全套課件
- JT-T-445-2021汽車底盤測功機(jī)
- 體育科學(xué):田徑考試考試題(三)
- 內(nèi)部駕照筆試附有答案
- 2024年4月自考03200預(yù)防醫(yī)學(xué)(二)試題
評論
0/150
提交評論