版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
內(nèi)容概要問題與案例SVN簡(jiǎn)介L(zhǎng)inux版Windows版內(nèi)容概要1問題與案例(一)電腦發(fā)生故障,文件沒有備份而丟失了由于人員離職,導(dǎo)致某些資料丟失了我怎么知道手頭的公共資料是不是最新版呢?想要追溯幾個(gè)月前的某個(gè)狀態(tài),卻發(fā)現(xiàn)那個(gè)版本的文件已經(jīng)被當(dāng)作垃圾刪除了每天要花費(fèi)很多時(shí)間來向別人提供需要共享的資料問題與案例(一)電腦發(fā)生故障,文件沒有備份而丟失了2問題與案例(二)相似的應(yīng)用系統(tǒng),每次都重復(fù)開發(fā),難以復(fù)用一個(gè)軟件被用于多個(gè)項(xiàng)目,發(fā)現(xiàn)其中存在一個(gè)BUG,所有這些項(xiàng)目都要進(jìn)行修復(fù)人員分布在兩地開發(fā),版本如何同步甲乙兩人為不同目的修改了同一份文件,乙的提交在甲提交之后,導(dǎo)致甲修改的內(nèi)容丟失了客戶測(cè)試發(fā)現(xiàn)了BUG,開發(fā)人員卻無法重現(xiàn)出來問題與案例(二)相似的應(yīng)用系統(tǒng),每次都重復(fù)開發(fā),難以復(fù)用3BackSVN圖例SVN簡(jiǎn)介(一)BackSVN圖例SVN簡(jiǎn)介(一)4SVN簡(jiǎn)介(二)一個(gè)開源的版本管理軟件可架設(shè)在Apache上,使用http或https協(xié)議訪問;也可使用內(nèi)置的svn協(xié)議訪問在Windows環(huán)境下,最常用的客戶端為TortoiseSVN(簡(jiǎn)稱TSVN)在Linux/Unix環(huán)境下,用命令行方式操作SVN的版本號(hào)指的不是某個(gè)文件的狀態(tài),而是整個(gè)庫(kù)的狀態(tài)BackSVN簡(jiǎn)介(二)一個(gè)開源的版本管理軟件Back5LinuxSVN服務(wù)器幫助手冊(cè)一系統(tǒng)環(huán)境說明二svn客戶端操作svn使用基本流程查詢操作定義操作編輯操作三注意事項(xiàng)LinuxSVN服務(wù)器幫助手冊(cè)一系統(tǒng)環(huán)境說6Linux系統(tǒng)環(huán)境說明公司linuxsvn服務(wù)器IP地址為1,服務(wù)器名字:dept5svn。操作系統(tǒng)版本.RedHatEnterpriseLinuxServerrelease5.4(Tikanga),32位。內(nèi)核版本:2.6.18-164.el5xen軟件環(huán)境:apache2.4.1,subversion1.7.0,sqlite3.7.0.Linux系統(tǒng)環(huán)境7
客戶端操作(一)svn使用基本流程:初次checkout倉(cāng)庫(kù)項(xiàng)目,建立本地工作拷貝目錄與項(xiàng)目同步(update),保證要進(jìn)行的編輯時(shí)最新版本
編輯源代碼(包括創(chuàng)建,修改,刪除)、與項(xiàng)目同步,提交之前要同步到最新版本,保證所有在自己之前的有關(guān)提交已經(jīng)在本地有所知曉解決沖突(resolveconflict)提交(commit),一定要寫上這次提交的內(nèi)容的摘要,便于以后查閱客戶端操作(8(二)查詢操作1.將文件checkout到本地目錄通過瀏覽器查詢,輸入1/svn/smqv600/,在第一次訪問時(shí),輸入svn賬號(hào)和密碼,成功驗(yàn)證后會(huì)彈出如下圖示(二)查詢操作1.將文件checkout到本地目錄9(二)查詢操作
2.查看文件或目錄狀態(tài)1)svnstatuspath(目錄下的文件和子目錄狀態(tài),正常狀態(tài)不顯示)
狀態(tài)說明【?:不在svn的控制中;M:內(nèi)容被修改;C:發(fā)生沖突;A:預(yù)定加入到版本庫(kù);K;被鎖定】2)svnstatus–vpath(顯示文件和子目錄狀態(tài))第一列保持相同,第二列顯示工作版本號(hào),第三和第四列顯示最后一次修改的版本號(hào)和修改人。注:svnstatus,svndiff,和svnrevert這三條命令在沒有網(wǎng)絡(luò)的情況下也可以執(zhí)行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。在checkout后的項(xiàng)目目錄中輸入svnstatus–v.簡(jiǎn)寫:svnst–v(二)查詢操作2.查看文件或目錄狀態(tài)103.查看文件詳細(xì)信息在checkout后的項(xiàng)目目錄中輸入svninfopath如svninfotest.ph4.查看日志信息在checkout后的項(xiàng)目目錄中輸入svnlogpath例如:svnlogtest.php顯示這個(gè)文件所有修改記錄,及其版本號(hào)的變化SVN使用幫助完整版課件115.比較差異svndiffpath(將修改的文件與基礎(chǔ)版本比較)在checkout后的項(xiàng)目目錄中輸入svndiff–rm:npath(對(duì)版本m和n比較差異)例如:輸入$svndiff–r2:4test.php6
svn幫助在用戶svn命令可執(zhí)行的路徑下輸入svnhelpsvnhelpci如圖示5.比較差異127.svnlistpath顯示版本庫(kù)下的文件和目錄列表
簡(jiǎn)寫:svnls8.svncat輸出指定文件或URL的內(nèi)容svncat–rPREVfilename>filename(PREV時(shí)上一版本,也可以寫具體版本號(hào),這樣輸出結(jié)果是可以提交的)SVN使用幫助完整版課件13(三)定義操作整個(gè)項(xiàng)目負(fù)責(zé)人具有項(xiàng)目定義的權(quán)限,因此這里簡(jiǎn)單介紹下,項(xiàng)目庫(kù)定義的有關(guān)操作及說明1.創(chuàng)建項(xiàng)目:$svnadmincreate–-fs-typefsfs/home/svn/repository/xxx,這樣就創(chuàng)建了xxx目錄,其下還有許多輔助目錄如圖說明/home/svn/repository/xxx/conf時(shí)這個(gè)項(xiàng)目配置文件存放地方/home/svn/repository/xxx/hooks是hooks腳本的存放位置(三)定義操作整個(gè)項(xiàng)目負(fù)責(zé)人具有項(xiàng)目定義的權(quán)限,因此這里簡(jiǎn)142.項(xiàng)目布局:有實(shí)踐經(jīng)驗(yàn),一個(gè)項(xiàng)目的生存周期也不是單線的,常常有些分支或者穩(wěn)定版發(fā)布或者特定功能實(shí)驗(yàn)性加入等事件,項(xiàng)目的布局需要進(jìn)行一定設(shè)計(jì)來支持這些事件,官方指導(dǎo)建議布局為Project/trunk項(xiàng)目主體存放位置Project/branches項(xiàng)目各種分支存放Project/tag公開發(fā)布的版本存檔雖然官方提供svnmkdir等命令逐一建立,然后提交。但本人建議一種比較簡(jiǎn)便的方法,輸入如下語句:cd/home/svn/repository/xxxmkdirtrunk;mkdirbranches;mkdirtagssvnimport.file:///home/svn/repository/xxx/,注意它會(huì)自動(dòng)調(diào)用vim編輯器,在編輯狀態(tài)下輸入此次操作的信息如:’Initialrepositorylayout’如圖所示:2.項(xiàng)目布局:15導(dǎo)入過程如圖:導(dǎo)入過程如圖:163.實(shí)現(xiàn)過程例如文件的配置,賬號(hào)的建立和權(quán)限的控制,鑒于篇幅和實(shí)際工作環(huán)境中的需求,在此不作累述。如有疑問可咨詢IT中心4.項(xiàng)目的刪除,注意不是倉(cāng)庫(kù)的清空。簡(jiǎn)單的把項(xiàng)目目錄刪除就可以了
rm–rf/home/svn/repository/xxxSVN使用幫助完整版課件17(四)編輯操作1.在項(xiàng)目目錄中,創(chuàng)建文件,目錄
執(zhí)行svnaddtest.php(添加test.php)svnadd*.php(添加當(dāng)前目錄下所有的php文件)svnaddtest(目錄)2.將改動(dòng)的文件提交到版本庫(kù)如執(zhí)行svncommittest.php簡(jiǎn)寫為svnci
提交整個(gè)目錄
(四)編輯操作1.在項(xiàng)目目錄中,創(chuàng)建文件,目錄183.加鎖/解鎖svnlock–m“l(fā)ocktest.phpfile”test.php為了方便編輯和管理控制,服務(wù)器端數(shù)據(jù)庫(kù)沒有開放lock。如有特殊需要,可以向IT中心咨詢svnunlocktest.php
4.更新到某個(gè)版本svnupdate–rmpath(簡(jiǎn)寫svnup)例如:svnuptdate如果后面沒有目錄,默認(rèn)將當(dāng)前目錄以及子目錄下的所有文件都更新到最新版本svnupdate-r9test.php(將版本庫(kù)中的文件test.php更新到版本9)注意svnupdatetest.php(更新,于版本庫(kù)同步。如果在提交的時(shí)候提示過期的話,是因?yàn)闆_突,需要先update,修改文件,然后清除svnresolved,最后再提交commit)3.加鎖/解鎖195.恢復(fù)本地修改svnrevert:恢復(fù)原始未改變的工作副本文件(恢復(fù)大部分的本地修改)。本子命令不會(huì)存取網(wǎng)絡(luò),并且會(huì)解除沖突的狀況。但是它不會(huì)恢復(fù)被刪除的目錄用法svnreverttest6.刪除文件svndeletepath–m“deletetestfile”
例如:svndelete1/svn/smqv600/test.php–m“deletetest.php”或者直接svndeletetest.php然后再svnci–m‘deletetest.php’簡(jiǎn)寫為:svn(del,remove,rm)或者SVN使用幫助完整版課件20
三注意事項(xiàng)1在用瀏覽器進(jìn)行訪問的時(shí)候,要正確輸入1/svn/,而如果輸入1/svn則會(huì)報(bào)錯(cuò)http404未找到2在linux客戶端操作下,客戶端在svn進(jìn)行編輯操作可能會(huì)出現(xiàn)“svn:無法使用外部編輯器獲得日志信息,考慮設(shè)置環(huán)境變量$SVN_EDITOR或者使用—message(-m)或—file(-F)選項(xiàng)………..”這是只要設(shè)置環(huán)境變量如下$exportSVN_EDITOR=vim就可以了!三注意事項(xiàng)21Windows版本應(yīng)用環(huán)境客戶端安裝簡(jiǎn)單應(yīng)用復(fù)雜應(yīng)用Windows版本22應(yīng)用環(huán)境服務(wù)器端:Virsual的SVN服務(wù)器端安裝包(內(nèi)含Apache2.2.22)Windows客戶端:推薦使用TortoiseSVN(以下簡(jiǎn)稱TSVN)可通過TSVN進(jìn)行讀、寫操作可通過IE瀏覽器進(jìn)行讀操作可通過各種插件與開發(fā)工具集成Back應(yīng)用環(huán)境服務(wù)器端:Virsual的SVN服務(wù)器端安裝包(內(nèi)含23客戶端安裝(一)安裝文件:TSVN客戶端:TortoiseSVN-2459-win32-svn-1.7.2全部選擇默認(rèn)安裝,安裝完成后重啟電腦TSVN通過右鍵菜單與Windows資源管理器集成,沒有自己的窗口界面Back客戶端安裝(一)安裝文件:Back24客戶端安裝(二)TSVN通過右鍵菜單與Windows資源管理器集成,沒有自己的窗口界面Back客戶端安裝(二)TSVN通過右鍵菜單與Windows資源管理25簡(jiǎn)單應(yīng)用TSVN右鍵菜單與圖標(biāo)創(chuàng)建版本庫(kù)檢出更新提交增加刪除改名移動(dòng)Back簡(jiǎn)單應(yīng)用TSVN右鍵菜單與圖標(biāo)Back26TSVN右鍵菜單(一)Back第一次從服務(wù)器下載數(shù)據(jù)(含歷史信息)查看服務(wù)器上版本庫(kù)內(nèi)容從服務(wù)器下載數(shù)據(jù)(不含歷史信息)在服務(wù)器上創(chuàng)建新的版本庫(kù)(限服務(wù)器上操作)導(dǎo)入新版本庫(kù)的目錄結(jié)構(gòu)(不推薦使用)TSVN右鍵菜單(一)Back第一次從服務(wù)器下載數(shù)據(jù)(含歷史27TSVN右鍵菜單(二)Back從服務(wù)器上下載最新版本將本地的修改上傳到服務(wù)器查看修訂歷史信息標(biāo)記沖突已經(jīng)被解決取回之前的某個(gè)版本放棄本次進(jìn)行的修改SVN控制下的改名和刪除將新文件納入SVN的控制創(chuàng)建分支或標(biāo)記合并分支TSVN右鍵菜單(二)Back從服務(wù)器上將本地的修改上傳到服28TSVN圖標(biāo)BackTSVN圖標(biāo)Back29創(chuàng)建版本庫(kù)在SVN服務(wù)器端操作在相應(yīng)文件夾內(nèi)新建一個(gè)文件夾,用于存儲(chǔ)數(shù)據(jù)在新建文件夾上點(diǎn)右鍵,選擇“TortoiseSVN-在此創(chuàng)建版本庫(kù)”,TSVN會(huì)在此文件夾內(nèi)建立若干控制文件Back創(chuàng)建版本庫(kù)在SVN服務(wù)器端操作Back30檢出(一)“檢出”用于客戶端第一次從SVN服務(wù)器上下載版本庫(kù)數(shù)據(jù)在客戶端新建一個(gè)文件夾用于存放下載的數(shù)據(jù)在新建文件夾上點(diǎn)右鍵,選擇“SVN檢出…”Back檢出(一)“檢出”用于客戶端第一次從SVN服務(wù)器上下載版本庫(kù)31檢出(二)在彈出窗口的“版本庫(kù)URL”處填入版本庫(kù)的訪問地址,如:22/svn/project/點(diǎn)“確定”開始從SVN服務(wù)器下載數(shù)據(jù)Back檢出(二)在彈出窗口的“版本庫(kù)URL”處填入版本庫(kù)的訪問地址32更新“更新”用于客戶端從SVN服務(wù)器下載最新版本在受SVN控制的某層文件夾上(或文件夾內(nèi)空白處)點(diǎn)右鍵,選擇“SVN更新”,TSVN自動(dòng)比較該文件夾客戶端與服務(wù)器的版本差異,并下載最新版本到客戶端Back更新“更新”用于客戶端從SVN服務(wù)器下載最新版本Back33提交(一)“提交”用于將客戶端的改動(dòng)上傳到SVN服務(wù)器在受SVN控制的某層文件夾上(或文件夾內(nèi)空白處,或某文件上)點(diǎn)右鍵,選擇“SVN提交…”Back提交(一)“提交”用于將客戶端的改動(dòng)上傳到SVN服務(wù)器Bac34提交(二)TSVN自動(dòng)檢查該文件夾客戶端的改動(dòng),并將其列在彈出窗口的“變更列表”欄在彈出窗口的“信息”欄寫上對(duì)此次提交的注釋,以便將來追溯點(diǎn)擊“確定”將客戶端的改動(dòng)上傳到服務(wù)器Back提交(二)TSVN自動(dòng)檢查該文件夾客戶端的改動(dòng),并將其列在彈35增加(一)“增加”用于將新文件或文件夾納入SVN的控制之下在受SVN控制的某層文件夾上(或文件夾內(nèi)空白處,或新增的某文件上)點(diǎn)右鍵,選擇“TortoiseSVN-增加”Back增加(一)“增加”用于將新文件或文件夾納入SVN的控制之下B36增加(二)如果“增加”是對(duì)文件夾進(jìn)行操作,則會(huì)彈出窗口列出該文件夾下未受控的文件,點(diǎn)擊“確定”將其納入SVN控制“增加”后文件圖標(biāo)從變成“增加”僅是對(duì)客戶端的文件進(jìn)行標(biāo)注,并不上傳到服務(wù)器,需要執(zhí)行“提交”操作才會(huì)上傳Back增加(二)如果“增加”是對(duì)文件夾進(jìn)行操作,則會(huì)彈出窗口列出該37刪除(一)“刪除”用于從當(dāng)前版本中刪除文件或文件夾在受SVN控制的文件夾中,通過Windows直接刪除子文件夾或文件或:在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-刪除”Back刪除(一)“刪除”用于從當(dāng)前版本中刪除文件或文件夾Back38刪除(二)“刪除”僅是對(duì)客戶端的文件進(jìn)行操作,并不改變服務(wù)器上的內(nèi)容,需要執(zhí)行“提交”操作才會(huì)將刪除操作上傳到服務(wù)器將“刪除”操作“提交”到服務(wù)器后,僅是從服務(wù)器的最新版本中刪除了此文件或文件夾,在歷史版本中仍可找回此文件或文件夾Back刪除(二)“刪除”僅是對(duì)客戶端的文件進(jìn)行操作,并不改變服務(wù)器39改名(一)“改名”用于在受SVN控制的狀態(tài)下,對(duì)文件或文件夾改名在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-改名”Back改名(一)“改名”用于在受SVN控制的狀態(tài)下,對(duì)文件或文件夾40改名(二)“改名”僅是對(duì)客戶端的文件進(jìn)行操作,并不改變服務(wù)器上的內(nèi)容,需要執(zhí)行“提交”操作才會(huì)將改名操作上傳到服務(wù)器不要用Windows“重命名”來實(shí)現(xiàn)改名,因?yàn)檫@個(gè)操作不受SVN控制,SVN會(huì)將其理解為刪除原文件、增加一個(gè)新文件,從而導(dǎo)致文件改名后不能跟蹤到改名前的狀態(tài)Back改名(二)“改名”僅是對(duì)客戶端的文件進(jìn)行操作,并不改變服務(wù)器41改名(三)改名的另一種方法:在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-版本庫(kù)瀏覽器”在彈出窗口右鍵點(diǎn)擊要改名的文件夾或文件,選擇“改名”由于是對(duì)服務(wù)器版本庫(kù)直接操作,改名后將自動(dòng)執(zhí)行一次“提交”操作改名完成后需要在客戶端執(zhí)行一次“更新”,以下載最新狀態(tài)Back改名(三)改名的另一種方法:Back42移動(dòng)(一)“移動(dòng)”用于在受SVN控制的狀態(tài)下,移動(dòng)文件或文件夾的位置在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-版本庫(kù)瀏覽器”在彈出窗口拖動(dòng)文件夾或文件到需要的位置由于是對(duì)服務(wù)器版本庫(kù)直接操作,移動(dòng)后將自動(dòng)執(zhí)行一次“提交”操作移動(dòng)完成后需要在客戶端執(zhí)行一次“更新”,以下載最新狀態(tài)Back移動(dòng)(一)“移動(dòng)”用于在受SVN控制的狀態(tài)下,移動(dòng)文件或文件43移動(dòng)(二)不要用Windows的拖動(dòng)操作或“剪切”、“粘貼”來實(shí)現(xiàn)移動(dòng),因?yàn)檫@些操作不受SVN控制,SVN會(huì)將其理解為在原位置刪除文件、在新位置增加文件,從而導(dǎo)致文件移動(dòng)后不能跟蹤到移動(dòng)前的狀態(tài)Back移動(dòng)(二)不要用Windows的拖動(dòng)操作或“剪切”、“粘貼”44復(fù)雜應(yīng)用更新至版本還原復(fù)原(回滾)沖突及解決分支/標(biāo)記合并鎖定/解鎖權(quán)限管理Back復(fù)雜應(yīng)用更新至版本Back45更新至版本“更新至版本”用于取出文件的某歷史版本在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-更新至版本…”在彈出窗口中填寫要取的版本號(hào),點(diǎn)“確定”取回該版本Back更新至版本“更新至版本”用于取出文件的某歷史版本Back46還原(一)“還原”用于放棄“增加”、“刪除”、“改名”以及修改文件內(nèi)容等客戶端的本地操作,將客戶端的數(shù)據(jù)恢復(fù)到改動(dòng)前的版本狀態(tài)在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-SVN還原…”Back還原(一)“還原”用于放棄“增加”、“刪除”、“改名”以及修47還原(二)在彈出窗口中查看要還原的內(nèi)容,點(diǎn)擊“確定”還原客戶端數(shù)據(jù)“還原”只能用于執(zhí)行“提交”操作之前,即未將客戶端的改變上傳到服務(wù)器之前Back還原(二)在彈出窗口中查看要還原的內(nèi)容,點(diǎn)擊“確定”還原客戶48復(fù)原(回滾)(一)復(fù)原(回滾)用于將項(xiàng)目恢復(fù)到之前的某個(gè)版本狀態(tài),并在此版本基礎(chǔ)上繼續(xù)后面的工作在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-顯示日志”Back復(fù)原(回滾)(一)復(fù)原(回滾)用于將項(xiàng)目恢復(fù)到之前的某個(gè)版本49復(fù)原(回滾)(二)在彈出的日志窗口中,右鍵點(diǎn)擊要復(fù)原的版本,選擇“復(fù)原到此版本”復(fù)原結(jié)束后,執(zhí)行“提交”操作,將此版本作為版本庫(kù)的最新版本Back復(fù)原(回滾)(二)在彈出的日志窗口中,右鍵點(diǎn)擊要復(fù)原的版本,50沖突及解決(一)沖突的產(chǎn)生:當(dāng)兩人從同一個(gè)版本出發(fā),修改同一份文件并提交時(shí),這兩個(gè)修改版本就會(huì)發(fā)生沖突,后提交的人會(huì)收到發(fā)生沖突的提醒,且提交失敗,要求先進(jìn)行更新操作Back沖突及解決(一)沖突的產(chǎn)生:Back51沖突及解決(二)113114115113114115Back不會(huì)導(dǎo)致沖突可能導(dǎo)致沖突沖突及解決(二)113114115113114115Back52沖突及解決(三)發(fā)生沖突后,執(zhí)行“更新”操作后:對(duì)于發(fā)生沖突的文件,TSVN會(huì)加上沖突標(biāo)記如果發(fā)生沖突的文件是二進(jìn)制文件(如doc文件、jpg文件),TSVN會(huì)增加2個(gè)文件,分別是起始版本和發(fā)生沖突的版本如果發(fā)生沖突的文件是文本文件(如c文件、txt文件),TSVN會(huì)將工作副本中的原文件改名增加“.mine”后綴,將兩個(gè)版本的沖突寫入原名文件(文件中用<<<<<<<、=======、>>>>>>>加以標(biāo)識(shí)),并另外增加2個(gè)文件,分別是起始版本和發(fā)生沖突的版本Back沖突及解決(三)發(fā)生沖突后,執(zhí)行“更新”操作后:Back53沖突及解決(四)例如:兩人從第213版開始對(duì)start.c和SRS.doc進(jìn)行修改,甲先修改完成并提交形成217版,乙隨后提交時(shí)發(fā)生沖突,則在乙的該文件夾下將會(huì)存在七個(gè)文件:start.c:自動(dòng)合并了甲和乙的修改內(nèi)容的start.cstart.c.r213:甲乙修改前的start.cstart.c.r217:甲修改后的strat.cstart.c.mine:乙修改后的start.cSRS.doc:乙修改后的SRS.docSRS.doc.r213:甲乙修改前的SRS.docSRS.doc.r217:甲修改后的SRS.docBack沖突及解決(四)例如:兩人從第213版開始對(duì)start.c和54沖突及解決(五)解決沖突:手工將前一版本中的修改整合到自己的文件中在沖突的文件或文件夾上點(diǎn)右鍵,選擇“Tortoise-已解決的…”,標(biāo)記為沖突已解決(此時(shí)會(huì)自動(dòng)刪除多余的文件),然后再次“提交”Back沖突及解決(五)解決沖突:Back55分支/標(biāo)記(一)分支:“分支”通常用于在不同的線上同時(shí)工作的情況“分支”通常設(shè)置為分支的所有者擁有讀寫權(quán)限,其他人員僅有讀取權(quán)限標(biāo)記“標(biāo)記”通常用于版本發(fā)布、標(biāo)識(shí)基線狀態(tài)等情況“標(biāo)記”通常設(shè)置為配置管理員擁有讀寫缺陷,其他人員只有讀取權(quán)限SVN使用同樣的操作進(jìn)行“分支”和“標(biāo)記”Back分支/標(biāo)記(一)分支:Back56分支/標(biāo)記(二)推薦的目錄結(jié)構(gòu)Backprojecttrunkbranchestags代碼文檔分支/標(biāo)記(二)推薦的目錄結(jié)構(gòu)Backprojecttrun57分支/標(biāo)記(三)案例一709XXX軟件711A版712B版713C版714718720726717719722727716721728715723724730710Release_V1_0725Release_V1_1tags標(biāo)記trunk主干branches分支729Back分支/標(biāo)記(三)案例一709XXX軟件7117127137158分支/標(biāo)記(四)案例二711XXX軟件713V1_0維護(hù)715717719…714716718720712Release_V1_01012Release_V2_0tags標(biāo)記trunk主干branches分支10111013V2_0維護(hù)…Back分支/標(biāo)記(四)案例二711XXX軟件7137157177159分支/標(biāo)記(五)案例三Back712XXX軟件713BUG037717718720721714715716719trunk主干branches分支722發(fā)現(xiàn)BUG,編號(hào)037分支/標(biāo)記(五)案例三Back712XXX軟件713717760分支/標(biāo)記(六)創(chuàng)建分支在受SVN控制的某層文件夾上點(diǎn)右鍵,選擇“TortoiseSVN-分支/標(biāo)記…”在彈出窗口的“至URL”欄,填寫分支的存放地址,通常將其存放到branches目錄下,并加上分支的名稱,如:http://5:8080/svn/軟件中心/project/tags/Release_V1_0Back分支/標(biāo)記(六)創(chuàng)建分支在受SVN控制的某層文件夾上點(diǎn)右鍵,61分支/標(biāo)記(七)創(chuàng)建分支在彈出窗口的“從此復(fù)制到版本庫(kù)”處選擇從“最新版本”或“指定版本”或“工作副本”(工作副本可能是個(gè)混合版本)復(fù)制在彈出窗口的“日志信息”欄填寫注釋信息,然后點(diǎn)擊“確定”在對(duì)應(yīng)的文件夾執(zhí)行“更新”操作,下載分支到客戶端,之后對(duì)分支的操作均在此文件夾進(jìn)行Back分支/標(biāo)記(七)創(chuàng)建分支在彈出窗口的“從此復(fù)制到版本庫(kù)”處選62分支/標(biāo)記(八)創(chuàng)建標(biāo)記創(chuàng)建標(biāo)記與創(chuàng)建分支類似,只是通常將其存放到tags目錄下,如:5:8080/svn/軟件中心/project/tags/Release_V1_0標(biāo)記實(shí)際是為某個(gè)版本做了個(gè)標(biāo)簽,不會(huì)為另存一份而消耗服務(wù)器的存儲(chǔ)空間Back分支/標(biāo)記(八)創(chuàng)建標(biāo)記創(chuàng)建標(biāo)記與創(chuàng)建分支類似,只是通常將其63合并(一)合并:對(duì)兩個(gè)版本樹進(jìn)行比較,然后將區(qū)別應(yīng)用到本地副本(合并后需進(jìn)行“提交”操作)例如:在分支A上進(jìn)行了一系列修改,現(xiàn)在要將這些修改合并到主干上,則可比較建立A分支的版本與A分支最終版本之間的差異,并將差異應(yīng)用到主干上可從分支合并到主干,也可從主干合并到分支,也可從分支A合并到分支B可選擇合并創(chuàng)建分支以來的所有改變,也可選擇合并創(chuàng)建分支以來的某幾個(gè)版本的改變Back合并(一)合并:對(duì)兩個(gè)版本樹進(jìn)行比較,然后將區(qū)別應(yīng)用到本地副64合并(二)在目標(biāo)文件夾上點(diǎn)右鍵,如要將“branches/工行版”分支的內(nèi)容合并到主干上,則在“trunk”文件夾上點(diǎn)右鍵,選擇“Tortoise-合并…”在彈出窗口選擇“合并一個(gè)版本范圍”(常用選擇)點(diǎn)擊“下一條”Back合并(二)在目標(biāo)文件夾上點(diǎn)右鍵,如要將“branches/工65合并(三)在“合并的源URL”處選擇要合并進(jìn)來的分支地址,如:5:8080/svn/軟件中心/project/branches/工行版在“待合并的版本范圍”處填入合并的版本范圍,可點(diǎn)擊邊上的“顯示日志”選擇版本點(diǎn)擊“下一條”Back合并(三)在“合并的源URL”處選擇要合并進(jìn)來的分支地址,如66合并(四)合并深度選擇默認(rèn)的“工作副本”“比較空白字符”、“忽略空白字符的變化”等選擇用于對(duì)文本文件的比較“測(cè)試合并”可在正式合并之前測(cè)試合并結(jié)果,比如是否存在沖突等點(diǎn)擊“合并”若未發(fā)生沖突,可在合并后執(zhí)行“提交”操作Back合并(四)合并深度選擇默認(rèn)的“工作副本”Back67合并(五)若合并時(shí)發(fā)生沖突,通??稍趶棾龃翱谶x擇“以后解決”,在本地副本中沖突的文件處將增加2個(gè)文件(對(duì)二進(jìn)制文件)或3個(gè)文件(對(duì)文本文件)手動(dòng)解決沖突后,使用“Tortoise-已解決的”標(biāo)記沖突已解決,然后執(zhí)行“提交”操作Back合并(五)若合并時(shí)發(fā)生沖突,通常可在彈出窗口選擇“以后解決”68鎖定/解鎖(一)為了便于多人協(xié)作,SVN不提倡“鎖定-修改-解鎖”的方式由于存在沖突解決的機(jī)制,通常多人可對(duì)同一份文件進(jìn)行修改,而不會(huì)導(dǎo)致嚴(yán)重問題但在某些情況下,比如對(duì)一張圖片進(jìn)行修改時(shí),兩份沖突的圖片文件將很難被整合到一起,這時(shí)建議用鎖定/解鎖的方式Back鎖定/解鎖(一)為了便于多人協(xié)作,SVN不提倡“鎖定-修改-69鎖定/解鎖(二)鎖定方法一在需要鎖定的文件夾或文件上點(diǎn)右鍵,選擇“Tortoise-屬性”在彈出的“屬性”窗口選擇“新建…”,在彈出的“增加屬性”窗口,選擇“svn:needs-lock”屬性,并點(diǎn)“確定”增加屬性執(zhí)行“提交”操作,將屬性的改變上傳到服務(wù)器,若他人執(zhí)行更新操作,將看到文件被設(shè)置為只讀Back鎖定/解鎖(二)鎖定方法一Back70鎖定/解鎖(三)在設(shè)置了needs-lock屬性的文件或文件夾上點(diǎn)右鍵,選擇“SVN獲取鎖定…”,以獲取鎖的擁有權(quán)在彈出窗口輸入鎖定的原因等注釋信息,然后點(diǎn)擊“確定”獲取鎖定獲取鎖的擁有權(quán)后,文件將被標(biāo)識(shí)為Back鎖定/解鎖(三)在設(shè)置了needs-lock屬性的文件或文件71鎖定/解鎖(三)鎖定方法二在要鎖定的文件或文件夾上點(diǎn)右鍵,選擇“Tortoise-獲取鎖定”,即可鎖定并擁有其所有權(quán),文件將被標(biāo)識(shí)為采用此鎖定方法時(shí),并不會(huì)自動(dòng)設(shè)定svn:needs-lock屬性,別人更新后也看不到此標(biāo)記,但可阻止別人的提交Back鎖定/解鎖(三)鎖定方法二Back72鎖定/解鎖(四)鎖定后,他人提交時(shí)將被報(bào)告文件已被鎖,并提交失敗解鎖:對(duì)應(yīng)鎖定方法一:在鎖定的文件夾或文件上點(diǎn)右鍵,選擇“Tortoise-屬性”,刪除svn:needs-lock屬性,然后提交對(duì)應(yīng)鎖定方法二:當(dāng)擁有鎖的人提交被鎖定文件時(shí),鎖將被自動(dòng)取消(而且當(dāng)前擁有的所有鎖都將被解除);也可通過“解除鎖定”來解鎖竊取鎖:他人可通過“獲取鎖定”(勾選“偷取此鎖定”)來竊取鎖的擁有權(quán)強(qiáng)制解鎖:當(dāng)擁有鎖的人忘記解鎖時(shí),他人可通過SVN命令行強(qiáng)制解鎖(TSVN目前不提供該功能,可通過竊取鎖+解鎖實(shí)現(xiàn))Back鎖定/解鎖(四)鎖定后,他人提交時(shí)將被報(bào)告文件已被鎖,并提交73權(quán)限管理管理員可通過修改服務(wù)器上的權(quán)限文件,實(shí)現(xiàn)對(duì)權(quán)限的控制權(quán)限分為三種:無權(quán)限、只讀權(quán)限和讀寫權(quán)限權(quán)限的控制以文件夾為最小單位可對(duì)單個(gè)用戶的權(quán)限進(jìn)行控制,也可以對(duì)用戶組的權(quán)限進(jìn)行控制Back權(quán)限管理管理員可通過修改服務(wù)器上的權(quán)限文件,實(shí)現(xiàn)對(duì)權(quán)限的控制74Q&A完畢,謝謝!Q&A完畢,謝謝!75內(nèi)容概要問題與案例SVN簡(jiǎn)介L(zhǎng)inux版Windows版內(nèi)容概要76問題與案例(一)電腦發(fā)生故障,文件沒有備份而丟失了由于人員離職,導(dǎo)致某些資料丟失了我怎么知道手頭的公共資料是不是最新版呢?想要追溯幾個(gè)月前的某個(gè)狀態(tài),卻發(fā)現(xiàn)那個(gè)版本的文件已經(jīng)被當(dāng)作垃圾刪除了每天要花費(fèi)很多時(shí)間來向別人提供需要共享的資料問題與案例(一)電腦發(fā)生故障,文件沒有備份而丟失了77問題與案例(二)相似的應(yīng)用系統(tǒng),每次都重復(fù)開發(fā),難以復(fù)用一個(gè)軟件被用于多個(gè)項(xiàng)目,發(fā)現(xiàn)其中存在一個(gè)BUG,所有這些項(xiàng)目都要進(jìn)行修復(fù)人員分布在兩地開發(fā),版本如何同步甲乙兩人為不同目的修改了同一份文件,乙的提交在甲提交之后,導(dǎo)致甲修改的內(nèi)容丟失了客戶測(cè)試發(fā)現(xiàn)了BUG,開發(fā)人員卻無法重現(xiàn)出來問題與案例(二)相似的應(yīng)用系統(tǒng),每次都重復(fù)開發(fā),難以復(fù)用78BackSVN圖例SVN簡(jiǎn)介(一)BackSVN圖例SVN簡(jiǎn)介(一)79SVN簡(jiǎn)介(二)一個(gè)開源的版本管理軟件可架設(shè)在Apache上,使用http或https協(xié)議訪問;也可使用內(nèi)置的svn協(xié)議訪問在Windows環(huán)境下,最常用的客戶端為TortoiseSVN(簡(jiǎn)稱TSVN)在Linux/Unix環(huán)境下,用命令行方式操作SVN的版本號(hào)指的不是某個(gè)文件的狀態(tài),而是整個(gè)庫(kù)的狀態(tài)BackSVN簡(jiǎn)介(二)一個(gè)開源的版本管理軟件Back80LinuxSVN服務(wù)器幫助手冊(cè)一系統(tǒng)環(huán)境說明二svn客戶端操作svn使用基本流程查詢操作定義操作編輯操作三注意事項(xiàng)LinuxSVN服務(wù)器幫助手冊(cè)一系統(tǒng)環(huán)境說81Linux系統(tǒng)環(huán)境說明公司linuxsvn服務(wù)器IP地址為1,服務(wù)器名字:dept5svn。操作系統(tǒng)版本.RedHatEnterpriseLinuxServerrelease5.4(Tikanga),32位。內(nèi)核版本:2.6.18-164.el5xen軟件環(huán)境:apache2.4.1,subversion1.7.0,sqlite3.7.0.Linux系統(tǒng)環(huán)境82
客戶端操作(一)svn使用基本流程:初次checkout倉(cāng)庫(kù)項(xiàng)目,建立本地工作拷貝目錄與項(xiàng)目同步(update),保證要進(jìn)行的編輯時(shí)最新版本
編輯源代碼(包括創(chuàng)建,修改,刪除)、與項(xiàng)目同步,提交之前要同步到最新版本,保證所有在自己之前的有關(guān)提交已經(jīng)在本地有所知曉解決沖突(resolveconflict)提交(commit),一定要寫上這次提交的內(nèi)容的摘要,便于以后查閱客戶端操作(83(二)查詢操作1.將文件checkout到本地目錄通過瀏覽器查詢,輸入1/svn/smqv600/,在第一次訪問時(shí),輸入svn賬號(hào)和密碼,成功驗(yàn)證后會(huì)彈出如下圖示(二)查詢操作1.將文件checkout到本地目錄84(二)查詢操作
2.查看文件或目錄狀態(tài)1)svnstatuspath(目錄下的文件和子目錄狀態(tài),正常狀態(tài)不顯示)
狀態(tài)說明【?:不在svn的控制中;M:內(nèi)容被修改;C:發(fā)生沖突;A:預(yù)定加入到版本庫(kù);K;被鎖定】2)svnstatus–vpath(顯示文件和子目錄狀態(tài))第一列保持相同,第二列顯示工作版本號(hào),第三和第四列顯示最后一次修改的版本號(hào)和修改人。注:svnstatus,svndiff,和svnrevert這三條命令在沒有網(wǎng)絡(luò)的情況下也可以執(zhí)行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。在checkout后的項(xiàng)目目錄中輸入svnstatus–v.簡(jiǎn)寫:svnst–v(二)查詢操作2.查看文件或目錄狀態(tài)853.查看文件詳細(xì)信息在checkout后的項(xiàng)目目錄中輸入svninfopath如svninfotest.ph4.查看日志信息在checkout后的項(xiàng)目目錄中輸入svnlogpath例如:svnlogtest.php顯示這個(gè)文件所有修改記錄,及其版本號(hào)的變化SVN使用幫助完整版課件865.比較差異svndiffpath(將修改的文件與基礎(chǔ)版本比較)在checkout后的項(xiàng)目目錄中輸入svndiff–rm:npath(對(duì)版本m和n比較差異)例如:輸入$svndiff–r2:4test.php6
svn幫助在用戶svn命令可執(zhí)行的路徑下輸入svnhelpsvnhelpci如圖示5.比較差異877.svnlistpath顯示版本庫(kù)下的文件和目錄列表
簡(jiǎn)寫:svnls8.svncat輸出指定文件或URL的內(nèi)容svncat–rPREVfilename>filename(PREV時(shí)上一版本,也可以寫具體版本號(hào),這樣輸出結(jié)果是可以提交的)SVN使用幫助完整版課件88(三)定義操作整個(gè)項(xiàng)目負(fù)責(zé)人具有項(xiàng)目定義的權(quán)限,因此這里簡(jiǎn)單介紹下,項(xiàng)目庫(kù)定義的有關(guān)操作及說明1.創(chuàng)建項(xiàng)目:$svnadmincreate–-fs-typefsfs/home/svn/repository/xxx,這樣就創(chuàng)建了xxx目錄,其下還有許多輔助目錄如圖說明/home/svn/repository/xxx/conf時(shí)這個(gè)項(xiàng)目配置文件存放地方/home/svn/repository/xxx/hooks是hooks腳本的存放位置(三)定義操作整個(gè)項(xiàng)目負(fù)責(zé)人具有項(xiàng)目定義的權(quán)限,因此這里簡(jiǎn)892.項(xiàng)目布局:有實(shí)踐經(jīng)驗(yàn),一個(gè)項(xiàng)目的生存周期也不是單線的,常常有些分支或者穩(wěn)定版發(fā)布或者特定功能實(shí)驗(yàn)性加入等事件,項(xiàng)目的布局需要進(jìn)行一定設(shè)計(jì)來支持這些事件,官方指導(dǎo)建議布局為Project/trunk項(xiàng)目主體存放位置Project/branches項(xiàng)目各種分支存放Project/tag公開發(fā)布的版本存檔雖然官方提供svnmkdir等命令逐一建立,然后提交。但本人建議一種比較簡(jiǎn)便的方法,輸入如下語句:cd/home/svn/repository/xxxmkdirtrunk;mkdirbranches;mkdirtagssvnimport.file:///home/svn/repository/xxx/,注意它會(huì)自動(dòng)調(diào)用vim編輯器,在編輯狀態(tài)下輸入此次操作的信息如:’Initialrepositorylayout’如圖所示:2.項(xiàng)目布局:90導(dǎo)入過程如圖:導(dǎo)入過程如圖:913.實(shí)現(xiàn)過程例如文件的配置,賬號(hào)的建立和權(quán)限的控制,鑒于篇幅和實(shí)際工作環(huán)境中的需求,在此不作累述。如有疑問可咨詢IT中心4.項(xiàng)目的刪除,注意不是倉(cāng)庫(kù)的清空。簡(jiǎn)單的把項(xiàng)目目錄刪除就可以了
rm–rf/home/svn/repository/xxxSVN使用幫助完整版課件92(四)編輯操作1.在項(xiàng)目目錄中,創(chuàng)建文件,目錄
執(zhí)行svnaddtest.php(添加test.php)svnadd*.php(添加當(dāng)前目錄下所有的php文件)svnaddtest(目錄)2.將改動(dòng)的文件提交到版本庫(kù)如執(zhí)行svncommittest.php簡(jiǎn)寫為svnci
提交整個(gè)目錄
(四)編輯操作1.在項(xiàng)目目錄中,創(chuàng)建文件,目錄933.加鎖/解鎖svnlock–m“l(fā)ocktest.phpfile”test.php為了方便編輯和管理控制,服務(wù)器端數(shù)據(jù)庫(kù)沒有開放lock。如有特殊需要,可以向IT中心咨詢svnunlocktest.php
4.更新到某個(gè)版本svnupdate–rmpath(簡(jiǎn)寫svnup)例如:svnuptdate如果后面沒有目錄,默認(rèn)將當(dāng)前目錄以及子目錄下的所有文件都更新到最新版本svnupdate-r9test.php(將版本庫(kù)中的文件test.php更新到版本9)注意svnupdatetest.php(更新,于版本庫(kù)同步。如果在提交的時(shí)候提示過期的話,是因?yàn)闆_突,需要先update,修改文件,然后清除svnresolved,最后再提交commit)3.加鎖/解鎖945.恢復(fù)本地修改svnrevert:恢復(fù)原始未改變的工作副本文件(恢復(fù)大部分的本地修改)。本子命令不會(huì)存取網(wǎng)絡(luò),并且會(huì)解除沖突的狀況。但是它不會(huì)恢復(fù)被刪除的目錄用法svnreverttest6.刪除文件svndeletepath–m“deletetestfile”
例如:svndelete1/svn/smqv600/test.php–m“deletetest.php”或者直接svndeletetest.php然后再svnci–m‘deletetest.php’簡(jiǎn)寫為:svn(del,remove,rm)或者SVN使用幫助完整版課件95
三注意事項(xiàng)1在用瀏覽器進(jìn)行訪問的時(shí)候,要正確輸入1/svn/,而如果輸入1/svn則會(huì)報(bào)錯(cuò)http404未找到2在linux客戶端操作下,客戶端在svn進(jìn)行編輯操作可能會(huì)出現(xiàn)“svn:無法使用外部編輯器獲得日志信息,考慮設(shè)置環(huán)境變量$SVN_EDITOR或者使用—message(-m)或—file(-F)選項(xiàng)………..”這是只要設(shè)置環(huán)境變量如下$exportSVN_EDITOR=vim就可以了!三注意事項(xiàng)96Windows版本應(yīng)用環(huán)境客戶端安裝簡(jiǎn)單應(yīng)用復(fù)雜應(yīng)用Windows版本97應(yīng)用環(huán)境服務(wù)器端:Virsual的SVN服務(wù)器端安裝包(內(nèi)含Apache2.2.22)Windows客戶端:推薦使用TortoiseSVN(以下簡(jiǎn)稱TSVN)可通過TSVN進(jìn)行讀、寫操作可通過IE瀏覽器進(jìn)行讀操作可通過各種插件與開發(fā)工具集成Back應(yīng)用環(huán)境服務(wù)器端:Virsual的SVN服務(wù)器端安裝包(內(nèi)含98客戶端安裝(一)安裝文件:TSVN客戶端:TortoiseSVN-2459-win32-svn-1.7.2全部選擇默認(rèn)安裝,安裝完成后重啟電腦TSVN通過右鍵菜單與Windows資源管理器集成,沒有自己的窗口界面Back客戶端安裝(一)安裝文件:Back99客戶端安裝(二)TSVN通過右鍵菜單與Windows資源管理器集成,沒有自己的窗口界面Back客戶端安裝(二)TSVN通過右鍵菜單與Windows資源管理100簡(jiǎn)單應(yīng)用TSVN右鍵菜單與圖標(biāo)創(chuàng)建版本庫(kù)檢出更新提交增加刪除改名移動(dòng)Back簡(jiǎn)單應(yīng)用TSVN右鍵菜單與圖標(biāo)Back101TSVN右鍵菜單(一)Back第一次從服務(wù)器下載數(shù)據(jù)(含歷史信息)查看服務(wù)器上版本庫(kù)內(nèi)容從服務(wù)器下載數(shù)據(jù)(不含歷史信息)在服務(wù)器上創(chuàng)建新的版本庫(kù)(限服務(wù)器上操作)導(dǎo)入新版本庫(kù)的目錄結(jié)構(gòu)(不推薦使用)TSVN右鍵菜單(一)Back第一次從服務(wù)器下載數(shù)據(jù)(含歷史102TSVN右鍵菜單(二)Back從服務(wù)器上下載最新版本將本地的修改上傳到服務(wù)器查看修訂歷史信息標(biāo)記沖突已經(jīng)被解決取回之前的某個(gè)版本放棄本次進(jìn)行的修改SVN控制下的改名和刪除將新文件納入SVN的控制創(chuàng)建分支或標(biāo)記合并分支TSVN右鍵菜單(二)Back從服務(wù)器上將本地的修改上傳到服103TSVN圖標(biāo)BackTSVN圖標(biāo)Back104創(chuàng)建版本庫(kù)在SVN服務(wù)器端操作在相應(yīng)文件夾內(nèi)新建一個(gè)文件夾,用于存儲(chǔ)數(shù)據(jù)在新建文件夾上點(diǎn)右鍵,選擇“TortoiseSVN-在此創(chuàng)建版本庫(kù)”,TSVN會(huì)在此文件夾內(nèi)建立若干控制文件Back創(chuàng)建版本庫(kù)在SVN服務(wù)器端操作Back105檢出(一)“檢出”用于客戶端第一次從SVN服務(wù)器上下載版本庫(kù)數(shù)據(jù)在客戶端新建一個(gè)文件夾用于存放下載的數(shù)據(jù)在新建文件夾上點(diǎn)右鍵,選擇“SVN檢出…”Back檢出(一)“檢出”用于客戶端第一次從SVN服務(wù)器上下載版本庫(kù)106檢出(二)在彈出窗口的“版本庫(kù)URL”處填入版本庫(kù)的訪問地址,如:22/svn/project/點(diǎn)“確定”開始從SVN服務(wù)器下載數(shù)據(jù)Back檢出(二)在彈出窗口的“版本庫(kù)URL”處填入版本庫(kù)的訪問地址107更新“更新”用于客戶端從SVN服務(wù)器下載最新版本在受SVN控制的某層文件夾上(或文件夾內(nèi)空白處)點(diǎn)右鍵,選擇“SVN更新”,TSVN自動(dòng)比較該文件夾客戶端與服務(wù)器的版本差異,并下載最新版本到客戶端Back更新“更新”用于客戶端從SVN服務(wù)器下載最新版本Back108提交(一)“提交”用于將客戶端的改動(dòng)上傳到SVN服務(wù)器在受SVN控制的某層文件夾上(或文件夾內(nèi)空白處,或某文件上)點(diǎn)右鍵,選擇“SVN提交…”Back提交(一)“提交”用于將客戶端的改動(dòng)上傳到SVN服務(wù)器Bac109提交(二)TSVN自動(dòng)檢查該文件夾客戶端的改動(dòng),并將其列在彈出窗口的“變更列表”欄在彈出窗口的“信息”欄寫上對(duì)此次提交的注釋,以便將來追溯點(diǎn)擊“確定”將客戶端的改動(dòng)上傳到服務(wù)器Back提交(二)TSVN自動(dòng)檢查該文件夾客戶端的改動(dòng),并將其列在彈110增加(一)“增加”用于將新文件或文件夾納入SVN的控制之下在受SVN控制的某層文件夾上(或文件夾內(nèi)空白處,或新增的某文件上)點(diǎn)右鍵,選擇“TortoiseSVN-增加”Back增加(一)“增加”用于將新文件或文件夾納入SVN的控制之下B111增加(二)如果“增加”是對(duì)文件夾進(jìn)行操作,則會(huì)彈出窗口列出該文件夾下未受控的文件,點(diǎn)擊“確定”將其納入SVN控制“增加”后文件圖標(biāo)從變成“增加”僅是對(duì)客戶端的文件進(jìn)行標(biāo)注,并不上傳到服務(wù)器,需要執(zhí)行“提交”操作才會(huì)上傳Back增加(二)如果“增加”是對(duì)文件夾進(jìn)行操作,則會(huì)彈出窗口列出該112刪除(一)“刪除”用于從當(dāng)前版本中刪除文件或文件夾在受SVN控制的文件夾中,通過Windows直接刪除子文件夾或文件或:在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-刪除”Back刪除(一)“刪除”用于從當(dāng)前版本中刪除文件或文件夾Back113刪除(二)“刪除”僅是對(duì)客戶端的文件進(jìn)行操作,并不改變服務(wù)器上的內(nèi)容,需要執(zhí)行“提交”操作才會(huì)將刪除操作上傳到服務(wù)器將“刪除”操作“提交”到服務(wù)器后,僅是從服務(wù)器的最新版本中刪除了此文件或文件夾,在歷史版本中仍可找回此文件或文件夾Back刪除(二)“刪除”僅是對(duì)客戶端的文件進(jìn)行操作,并不改變服務(wù)器114改名(一)“改名”用于在受SVN控制的狀態(tài)下,對(duì)文件或文件夾改名在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-改名”Back改名(一)“改名”用于在受SVN控制的狀態(tài)下,對(duì)文件或文件夾115改名(二)“改名”僅是對(duì)客戶端的文件進(jìn)行操作,并不改變服務(wù)器上的內(nèi)容,需要執(zhí)行“提交”操作才會(huì)將改名操作上傳到服務(wù)器不要用Windows“重命名”來實(shí)現(xiàn)改名,因?yàn)檫@個(gè)操作不受SVN控制,SVN會(huì)將其理解為刪除原文件、增加一個(gè)新文件,從而導(dǎo)致文件改名后不能跟蹤到改名前的狀態(tài)Back改名(二)“改名”僅是對(duì)客戶端的文件進(jìn)行操作,并不改變服務(wù)器116改名(三)改名的另一種方法:在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-版本庫(kù)瀏覽器”在彈出窗口右鍵點(diǎn)擊要改名的文件夾或文件,選擇“改名”由于是對(duì)服務(wù)器版本庫(kù)直接操作,改名后將自動(dòng)執(zhí)行一次“提交”操作改名完成后需要在客戶端執(zhí)行一次“更新”,以下載最新狀態(tài)Back改名(三)改名的另一種方法:Back117移動(dòng)(一)“移動(dòng)”用于在受SVN控制的狀態(tài)下,移動(dòng)文件或文件夾的位置在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-版本庫(kù)瀏覽器”在彈出窗口拖動(dòng)文件夾或文件到需要的位置由于是對(duì)服務(wù)器版本庫(kù)直接操作,移動(dòng)后將自動(dòng)執(zhí)行一次“提交”操作移動(dòng)完成后需要在客戶端執(zhí)行一次“更新”,以下載最新狀態(tài)Back移動(dòng)(一)“移動(dòng)”用于在受SVN控制的狀態(tài)下,移動(dòng)文件或文件118移動(dòng)(二)不要用Windows的拖動(dòng)操作或“剪切”、“粘貼”來實(shí)現(xiàn)移動(dòng),因?yàn)檫@些操作不受SVN控制,SVN會(huì)將其理解為在原位置刪除文件、在新位置增加文件,從而導(dǎo)致文件移動(dòng)后不能跟蹤到移動(dòng)前的狀態(tài)Back移動(dòng)(二)不要用Windows的拖動(dòng)操作或“剪切”、“粘貼”119復(fù)雜應(yīng)用更新至版本還原復(fù)原(回滾)沖突及解決分支/標(biāo)記合并鎖定/解鎖權(quán)限管理Back復(fù)雜應(yīng)用更新至版本Back120更新至版本“更新至版本”用于取出文件的某歷史版本在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-更新至版本…”在彈出窗口中填寫要取的版本號(hào),點(diǎn)“確定”取回該版本Back更新至版本“更新至版本”用于取出文件的某歷史版本Back121還原(一)“還原”用于放棄“增加”、“刪除”、“改名”以及修改文件內(nèi)容等客戶端的本地操作,將客戶端的數(shù)據(jù)恢復(fù)到改動(dòng)前的版本狀態(tài)在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-SVN還原…”Back還原(一)“還原”用于放棄“增加”、“刪除”、“改名”以及修122還原(二)在彈出窗口中查看要還原的內(nèi)容,點(diǎn)擊“確定”還原客戶端數(shù)據(jù)“還原”只能用于執(zhí)行“提交”操作之前,即未將客戶端的改變上傳到服務(wù)器之前Back還原(二)在彈出窗口中查看要還原的內(nèi)容,點(diǎn)擊“確定”還原客戶123復(fù)原(回滾)(一)復(fù)原(回滾)用于將項(xiàng)目恢復(fù)到之前的某個(gè)版本狀態(tài),并在此版本基礎(chǔ)上繼續(xù)后面的工作在受SVN控制的某層文件夾或文件上點(diǎn)右鍵,選擇“TortoiseSVN-顯示日志”Back復(fù)原(回滾)(一)復(fù)原(回滾)用于將項(xiàng)目恢復(fù)到之前的某個(gè)版本124復(fù)原(回滾)(二)在彈出的日志窗口中,右鍵點(diǎn)擊要復(fù)原的版本,選擇“復(fù)原到此版本”復(fù)原結(jié)束后,執(zhí)行“提交”操作,將此版本作為版本庫(kù)的最新版本Back復(fù)原(回滾)(二)在彈出的日志窗口中,右鍵點(diǎn)擊要復(fù)原的版本,125沖突及解決(一)沖突的產(chǎn)生:當(dāng)兩人從同一個(gè)版本出發(fā),修改同一份文件并提交時(shí),這兩個(gè)修改版本就會(huì)發(fā)生沖突,后提交的人會(huì)收到發(fā)生沖突的提醒,且提交失敗,要求先進(jìn)行更新操作Back沖突及解決(一)沖突的產(chǎn)生:Back126沖突及解決(二)113114115113114115Back不會(huì)導(dǎo)致沖突可能導(dǎo)致沖突沖突及解決(二)113114115113114115Back127沖突及解決(三)發(fā)生沖突后,執(zhí)行“更新”操作后:對(duì)于發(fā)生沖突的文件,TSVN會(huì)加上沖突標(biāo)記如果發(fā)生沖突的文件是二進(jìn)制文件(如doc文件、jpg文件),TSVN會(huì)增加2個(gè)文件,分別是起始版本和發(fā)生沖突的版本如果發(fā)生沖突的文件是文本文件(如c文件、txt文件),TSVN會(huì)將工作副本中的原文件改名增加“.mine”后綴,將兩個(gè)版本的沖突寫入原名文件(文件中用<<<<<<<、=======、>>>>>>>加以標(biāo)識(shí)),并另外增加2個(gè)文件,分別是起始版本和發(fā)生沖突的版本Back沖突及解決(三)發(fā)生沖突后,執(zhí)行“更新”操作后:Back128沖突及解決(四)例如:兩人從第213版開始對(duì)start.c和SRS.doc進(jìn)行修改,甲先修改完成并提交形成217版,乙隨后提交時(shí)發(fā)生沖突,則在乙的該文件夾下將會(huì)存在七個(gè)文件:start.c:自動(dòng)合并了甲和乙的修改內(nèi)容的start.cstart.c.r213:甲乙修改前的start.cstart.c.r217:甲修改后的strat.cstart.c.mine:乙修改后的start.cSRS.doc:乙修改后的SRS.docSRS.doc.r213:甲乙修改前的SRS.docSRS.doc.r217:甲修改后的SRS.docBack沖突及解決(四)例如:兩人從第213版開始對(duì)start.c和129沖突及解決(五)解決沖突:手工將前一版本中的修改整合到自己的文件中在沖突的文件或文件夾上點(diǎn)右鍵,選擇“Tortoise-已解決的…”,標(biāo)記為沖突已解決(此時(shí)會(huì)自動(dòng)刪除多余的文件),然后再次“提交”Back沖突及解決(五)解決沖突:Back130分支/標(biāo)記(一)分支:“分支”通常用于在不同的線上同時(shí)工作的情況“分支”通常設(shè)置為分支的所有者擁有讀寫權(quán)限,其他人員僅有讀取權(quán)限標(biāo)記“標(biāo)記”通常用于版本發(fā)布、標(biāo)識(shí)基線狀態(tài)等情況“標(biāo)記”通常設(shè)置為配置管理員擁有讀寫缺陷,其他人員只有讀取權(quán)限SVN使用同樣的操作進(jìn)行“分支”和“標(biāo)記”Back分支/標(biāo)記(一)分支:Back131分支/標(biāo)記(二)推薦的目錄結(jié)構(gòu)Backprojecttrunkbranchestags代碼文檔分支/標(biāo)記(二)推薦的目錄結(jié)構(gòu)Backprojecttrun132分支/標(biāo)記(三)案例一709XXX軟件711A版712B版713C版714718720726717719722727716721728715723724730710Release_V1_0725Release_V1_1tags標(biāo)記trunk主干branches分支729Back分支/標(biāo)記(三)案例一709XXX軟件71171271371133分支/標(biāo)記(四)案例二711XXX軟件713V1_0維護(hù)715717719…714716718720712Release_V1_01012Release_V2_0tags標(biāo)記trunk主干branches分支10111013V2_0維護(hù)…Back分支/標(biāo)記(四)案例二711XXX軟件71371571771134分支/標(biāo)記(五)案例三Back712XXX軟件713BUG037717718720721714715716719trunk主干branches分支722發(fā)現(xiàn)BUG,編號(hào)037分支/標(biāo)記(五)案例三Back712XXX軟件7137177135分支/標(biāo)記(六)創(chuàng)建分支在受SVN控制的某層文件夾上點(diǎn)右鍵,選擇“TortoiseSVN
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年陜西寧陜縣文化旅游投資開發(fā)有限責(zé)任公司招聘筆試參考題庫(kù)附帶答案詳解
- 2025年全球及中國(guó)阻燃塑料膜行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球3D激光雷達(dá)掃描儀行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球低截止光纖行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)有機(jī)硅柔性皮膚粘合劑行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 教育政策解讀與匯報(bào)策略
- 校企合作構(gòu)建教育、科技、商業(yè)的橋梁
- 教育新思路家庭中孩子的社交技能教育
- 新能源汽車展會(huì)的品牌建設(shè)與推廣
- 家庭教育品牌建設(shè)小學(xué)生學(xué)習(xí)輔導(dǎo)的商業(yè)策略
- 三年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)附答案
- 中醫(yī)診療方案腎病科
- 2025年安慶港華燃?xì)庀薰菊衅腹ぷ魅藛T14人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 人教版(2025新版)七年級(jí)下冊(cè)數(shù)學(xué)第七章 相交線與平行線 單元測(cè)試卷(含答案)
- 玩具有害物質(zhì)風(fēng)險(xiǎn)評(píng)估-洞察分析
- 2024年河南省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 企業(yè)合規(guī)管理實(shí)務(wù)
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專家共識(shí)
- Hypermesh lsdyna轉(zhuǎn)動(dòng)副連接課件完整版
- 小學(xué)六年級(jí)數(shù)學(xué)計(jì)算題100道(含答案)
評(píng)論
0/150
提交評(píng)論