基礎(chǔ)09第二章軟件工具make svn_第1頁(yè)
基礎(chǔ)09第二章軟件工具make svn_第2頁(yè)
基礎(chǔ)09第二章軟件工具make svn_第3頁(yè)
基礎(chǔ)09第二章軟件工具make svn_第4頁(yè)
基礎(chǔ)09第二章軟件工具make svn_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余16頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

第二章UNIXmakemake是UNIX/LINUX的軟件開發(fā)程序思考...修改...生成...調(diào)試運(yùn)$vi$catleft_topleft_btm>$cc-c$cc-otrymain.oleft.o$

5個(gè)源文件:main.c,left_top,left_btm,right_top 并由此生成一個(gè)可執(zhí)行文件try#include<stdio.h>{#include<stdio.h>{#include<stdio.h>{}}}要生成可執(zhí)行程序try$catleft_topleft_btm> left_topleft_btm$catright_topright_btm> $cc-c left.c$cc-c right.c$cc-c main.c$cc-otryleft.oright.o .o文件生成可執(zhí)行文件 cc-ccc-ccatleft_topleft_btmcc-ccatright_topright_btm cc-otryleft.oright.o例如,left_topleft_btmleft.c具有生成和依賴的相互關(guān)系,由left_topleft_btm的合并將生成left.c,稱left.cleft_top和left_btmleft_top和left_btm,left.cleft_topleft_btmleft.c。同理,left.cleft.o具有生成和依賴的相互關(guān)系,簡(jiǎn)稱依賴關(guān)系。right.cright.o也left.cleft.oif(left.c left.o) <NT>表示newer-thancc-cleft.c 生成left.c所執(zhí)行令其中,left.cNT>left.oleft.cleft.oleft.cleft.occ-c依賴關(guān) 流程依賴關(guān)系符合遞推原則。例如,由于left.o依賴于left.c,而left.c依賴于left_top和left_btmleft.oleft_topleft_btmtry的makemake在執(zhí)行時(shí),根據(jù)Mkfle文件中對(duì)所有文件編譯順序的描述,通過(guò)比較對(duì)應(yīng)文件的最后修改時(shí)間,決定需要更新哪些文件;同時(shí)根據(jù)該文件中對(duì)所有文件編譯規(guī)則的描述,對(duì)需要更新的文件進(jìn)行重建。Makefile 文本文件文本文件 文本文件文本文件 或catleft_topleft_btm目標(biāo)”(TARGET通常規(guī)則中的目標(biāo)只有一個(gè)。規(guī)則中除“目標(biāo)”外所列出的文件DEPENDENT表示TARGET所依賴的文件,稱為依賴文件。而規(guī)則令COMMAND則表示生成TARGET所需要執(zhí)行令。例一 left_top<TAB>catleft_topleft_btm例二<TAB>rmmain.oright.o※“終極目標(biāo)”makemakefile文件中第一個(gè)規(guī)則的目標(biāo)。除了“終極目標(biāo)”所在的規(guī)則以外,其它規(guī)則的順序在Makefile文件中沒有意義命令 ※OMMAND也可以在TARGET:DEPENDENT的下一行,作為獨(dú)立令行,這時(shí)開頭必須使用制表符<TAB>,不能使用空格。(在Makefle中,在第一個(gè)規(guī)則之后出現(xiàn)的所有以<TAB>字符開始的行都會(huì)被當(dāng)作命令來(lái)處理)Makefile目標(biāo)文件的內(nèi)容是由依賴文件文件決定,依賴文件的任何一處改動(dòng),將導(dǎo)致目前已經(jīng)存在的目標(biāo)文件的內(nèi)容過(guò)期make的執(zhí)行(三種基本形式在make中,需要建立一個(gè)描述文件,用于表述所有的依賴關(guān)系。描述文件通常取名為Makefile或者makefile,在Linux中還可以取名為GNUmakefile。在s make的執(zhí)行方式有以下三種:makemake將按照GNUmakefile,makefile,Makefile的順序?qū)ふ襪ake的描述文件。$使用-fmake_filemake$make-f$make–fmakemy_makeTARGET作為“終極目標(biāo)”,并且按照my_make文件中所描述的依賴關(guān)系執(zhí)行相關(guān)令。Makefile中的目標(biāo)作為參數(shù)來(lái)執(zhí)行“make”make過(guò)程$make $make TARGETcatleft_topleft_btm> $makermmain.oright.ormmain.oright.oleft.omake根據(jù)文件的依賴關(guān)系,可以建立一個(gè)Makefile來(lái)描述try例三 left.oright.o<TAB>cc-otryleft.oright.omain.omain.o:main.c<TAB>cc-cmain.c <TAB>cc-cleft.cright.o:right.c<TAB>cc-c left_topleft_btm;catleft_topleft_btm>left.c right_topright_btm<TAB>catright_topright_btm>right.c<TAB>rmmain.oleft.oright.oleft.c如果建立描述文件Makefile$catleft_topleft_btm>left.ccc-cleft.ccc-ccatright_topright_btm>right.ccc-cright.ccc-otryleft.omain.o“mak”將首先解析“終極目標(biāo)”(try)所在的規(guī)則(例三中的第一個(gè)規(guī)則),根據(jù)其依賴文件(ht.omin.)依次(按照依賴文件列表從左到右的順序)尋找創(chuàng)建這些依賴文件的規(guī)則。首先為第一個(gè)依賴文件(left.o)尋找創(chuàng)建規(guī)則,如果第一個(gè)依賴文件依賴于其它文件(lft.c),則同樣為這個(gè)依賴文件(left.c)尋找創(chuàng)建規(guī)則(lft.c:lft_topft_tm;catfttoplft_btm>ft.c)。之后make從最后一個(gè)規(guī)則(例三中目標(biāo)為lft.c的規(guī)則)回退開始執(zhí)行,最終完成終極目標(biāo)的第一個(gè)依賴文件left.o的創(chuàng)建和更新。之后對(duì)第二個(gè)、第三個(gè)、第四個(gè)……“終極目標(biāo)”的依賴文件執(zhí)行同樣的過(guò)程(例三的的順序是“rigt.o”、“min.o”)。創(chuàng)建或者更新每一個(gè)規(guī)則依賴文件的過(guò)程都是這樣的一個(gè)過(guò)程,即按照依賴文件列表順序,使用同樣方式(按照同樣的過(guò)程)去重建每一個(gè)依賴文件,在完成對(duì)所有依賴文件的重建之后,最后一步才是重建此規(guī)則的目標(biāo)。從上文給出的顯示結(jié)果可以清晰地看出“mak”的這一執(zhí)行過(guò)程。 $make:‘try’isupto偽目標(biāo)“clean”沒有出現(xiàn)在其它任何規(guī)則的依賴列表中,它不是一個(gè)文件。在s 下運(yùn)行makeclean:$makermmain.oleft.oright.oleft.c如果修改了某個(gè)源文件,例如right_top,然后再執(zhí)行make命令,make就會(huì)循著依賴right_topright.c的依賴文件,根據(jù)遞推原則,需要執(zhí)行三條命令。執(zhí)行make$catright_topright_btm> cc-c cc-otryleft.oright.o 如果希望更新某個(gè)依賴文件的時(shí)間,可使用touch$touch$則right_top成為的文件,將再次執(zhí)行以上三條命令makeMakefile如果在COMMAND的前面沒有@,表示在執(zhí)行命令時(shí),首先將顯示命令,然后執(zhí)行。 echoo!$makegreetechoo!

@echoo!$makegreet echo

或 <TAB>echo rmmain.oleft.oright.oleft.c rmmain.oleft.o<TAB>right.oleft.c 變化后,就可以做到不更改Makefile的規(guī)則,只更改搜索 一般性搜索:變量VPATH(大小寫敏感 順序進(jìn)行搜索(當(dāng)前 VPATH=這樣就為所有規(guī)則的依賴指定了除當(dāng) 外的另外兩個(gè)搜 ,“src”選擇性搜索:關(guān)鍵字vpath(大小寫敏感關(guān)鍵字vpath可以為不同類型的文件(由文件名區(qū)分)指定不同的搜索 ,vpath有三※vpathPATTERNDIRECTOIES:為所有符合模式“PATTERN”的文件指定搜索“IRECTOIE”?!癙ATTERN”通常包含模式字符“%”?!?”表示匹配一個(gè)或者多個(gè)字符,例如,vpath%.h MakefileC語(yǔ)言中的宏相似,變量的值代表一個(gè)文本字符串。在※宏名=不同的宏。推薦的做法是在對(duì)于內(nèi)部定義的一般變量(例如:目標(biāo)文件列表objects)使用小寫方式,而對(duì)于一些參數(shù)列表(CFLAGS)采用大寫方式?!甑姆?(宏名 或 ${宏名只有當(dāng)宏名是單字符x的時(shí)候,才可以采用$x表示。例如在Makefilefoo= @echo$foo;echo運(yùn)行$makeprog,將顯示,這里$foo實(shí)際上表示$(f)oo,了宏f,但這是沒有定義過(guò)的宏,所以make找不到,※Makefile left.oright.o<TAB>cc-otryleft.oright.otask=obj=left.oright.o$(task):<TAB>cc-o$(task)類似C語(yǔ)言中我們要求盡量使用宏定義來(lái)表示常數(shù),在make中我們也要求盡量使用 left.oright.o<TAB>cc-otryleft.oright.o left.oright.o<TAB>cc-o$@task=obj=left.oright.o$(task):<TAB>cc-o$@right.o:right.c<TAB>cc-cright.o:right.c<TAB>cc-cmain.o:main.c;cc-cmain.c可以改寫為:main.o:main.c;cc-c$*.c在大多數(shù)依賴關(guān)系中,根據(jù)依賴文件生成目標(biāo)文件是有規(guī)律的。例如,C語(yǔ)言目標(biāo)文件(.o文件)總是由源文件(.c文件)生成的。因此在make中可以將其定義為缺省的傳遞規(guī)則。在GNUmake中支持兩種傳遞規(guī)則定義方式:模式規(guī)則和后綴規(guī)則。※以上文中的Makefile為例,.c文件生成.omain.o:<TAB>cc-cmain.c <TAB>cc-cleft.cright.o:right.c<TAB>cc-c%.o:%.c;cc-c來(lái)創(chuàng)建文件“N.o”?!癗”main、leftright?!癱cc$<”left.oright.o或者main.o的編譯命令“cc-cmain.c”、“cc-cleft.c”和“cc-cright.c”的統(tǒng)一表述。※由.c文件生成.o<TAB>cc-c這一規(guī)則中,.c和.o分別是依賴文件和目標(biāo)文件的后綴,它的含義是所有“.o”文件的依賴文件是對(duì)應(yīng)的“.c”文件,并通過(guò)執(zhí)行對(duì)應(yīng)令生成。如果make發(fā)現(xiàn)某個(gè).o文件需要重main.cmain.omain.c替換$<,從而執(zhí)行命令“cc-cmain.c”生成main.o。如果希望將編譯產(chǎn)生的出錯(cuò)信息保留到后綴為.err的文件中,可以進(jìn)一步改寫以上的依.c.o:;cc-c makemake提供了類似 的控制結(jié)構(gòu),如if,for,while等。以for結(jié)構(gòu)為例,例如一B fordirind1d2 d1,d2d3cd make-f 執(zhí)行某個(gè)描述文件,如cd makeforSUBDIR=d1d2build<TAB>@fordirin$(SUBDIR);do\ cd$${dir};make-f$${dir}_make; 用$$變cd cd其中,在 $${dir}來(lái)dir,而不能簡(jiǎn)單地使用${dir}在make中,for結(jié)構(gòu)為一個(gè)語(yǔ)句組單位,需要用分號(hào)代替 makeGNUmake的函數(shù)提供了處理文件名、變量、文本和命令的方法。函數(shù)的在調(diào)用它的地方※$(FUNCTIONARGUMENTS)或者${FUNCTION“FUNCTION”make內(nèi)嵌的函數(shù)名,“ARGUMENTS”是函數(shù)的參數(shù),參數(shù)和函數(shù)名之間使用空格或者<TAB>字符分隔。以字符串替換函數(shù)subst為例,其調(diào)用方式是$(substFROM,TO,該函數(shù)的功能是把字串“TEXT”中的“FROM”字符替換為“TO”,返回替換后的新字符串。例如若在Makfle中寫入:ori=feetonthestreetbar=$(substee,EE,$(ori)) @echo$(bar) 下面運(yùn)行makeprog,將顯示:fEEtonthestrEEt 回結(jié)果是此命令在s right=$(s echoright*)right.c:$(right);cat$^>$@或right=$(slsright*)right.c:$(right);cat$^>$@運(yùn)行makeright.ccatright_btmright_topmake#Function:descriptionfiletomake“try”#Usage:$make R_TXT= L_TXT=left_top LS RS OBJ $(OBJ);cc- .c.o: cc-c <TAB>cat$(L_TXT) <TAB>cat$(R_TXT)make的其他應(yīng)用——檢測(cè)新任務(wù)的描述文件設(shè)文件$HOME/todayJob記錄了當(dāng)天未完成的和新增的工作任務(wù),文件jobList記錄了未完成和已完成的任務(wù)。用make進(jìn)行檢測(cè)是否有新增的任務(wù),功能為:將todayJob加到j(luò)obList中,如果jobList發(fā)生變動(dòng),需要提醒。描述文件jobMake的內(nèi)容為:#Function:checkmyjoblistJOB=jobListTODAY=$(JOB): <TAB>@cp$@ <TAB>@cat$@.bak$(TODAY)|sort-u> <TAB>@if[-n“`diff$@$@.bak` <TAB>thenecho“youhavenewjobin elseecho“notfoundnewjob”;fi 執(zhí)行make:$make-f【程序解析】首先,由jobList一個(gè)備份文件jobList.bak。然后執(zhí)行命令“cat$(TODAY)|sort-u>$@”,表示合并備份文件和todayJob,并且通過(guò)命令“sort-u”刪去重復(fù)行(由可選項(xiàng)-u表示)。如果jobList和jobList.bak不相同,則用diff命令比較兩個(gè)文件的結(jié)版本管理工具SCCS(SourceCodeCotrolSystem)是一種基本的源文件版本控制工具,基于單一文件的版本控制。工作時(shí)需要一個(gè)專門的SCCS格式的文件保留其源文件的編碼版本。類似的還有RCS。Clearcase是IBM一款重量級(jí)的軟件配置管理工具,涵蓋的范圍從最初的軟件配置計(jì)劃,到配置項(xiàng)的確立,從變更控制到版本控制,貫穿于整個(gè)軟件生命周期,是主流的商業(yè)工具。SVN(SubVersion)由CVSCVS的一些弱點(diǎn)進(jìn)行改進(jìn),用以替代CVS。SVN寫讀讀客戶端客戶端客戶端 寫讀讀客戶端客戶端客戶端 文件共享需要避文件共享需要避免的問(wèn)題:不同用戶之間的相互干擾,如下面“” 讀文件讀文件寫文件寫文件江江江江 為File2,丟失所作讀文件讀文件寫文件讀文件讀文件寫文件寫文件江江江江文件,發(fā)生"Out文件文件文件 江拷貝了版本庫(kù) 江更新版本庫(kù)文 版本庫(kù) 生成新文件 為 新文件SVN 樹的變※SVN使用一種類似硬(Unix名詞)的機(jī)制拷貝整個(gè)工程來(lái)對(duì)分支和進(jìn)行操作,消SVN版本庫(kù)是一種特殊的文件服務(wù)器,用于保存項(xiàng)目版本化數(shù)據(jù),記錄每一次改變,包括每一個(gè)文件的改變和 樹本身的改變。通常采用標(biāo)準(zhǔn)URL格式版本庫(kù),例如,協(xié) 主 版本工作拷貝(Working為了得到一個(gè)工作拷貝,你必須檢本庫(kù)的一個(gè)子樹。一個(gè)SVN工作拷貝是你本地 ※私有工作區(qū):可以任意的刪改文件。在明確的特定操作(如“svnupdte”等)之前,私有工作區(qū)不會(huì)影響版本庫(kù),也不會(huì)受到版本庫(kù)的影響?!芾韰^(qū)域:工作拷貝的每一個(gè)文件夾都包含一個(gè)以.svn為名的文件夾,也做工作拷貝管理目SVN的修訂號(hào)是針對(duì)整個(gè)樹的,而不是單個(gè)文件。每一個(gè)修訂號(hào)代表了一次提交后版本庫(kù)整個(gè)樹的特定狀態(tài)。版本庫(kù)的修訂號(hào)為N代表版本庫(kù)已經(jīng)經(jīng)過(guò)了N次提交。例如若當(dāng)前從版本庫(kù)檢出一個(gè)工作拷貝,版本號(hào)為4:即該項(xiàng)目中包含三個(gè)文件,當(dāng)前版本號(hào)都為4。這時(shí)修改了button.c并提交之后,假設(shè)沒有別的提交出現(xiàn),的提交會(huì)在版本庫(kù)建立修訂版本5,的工作拷貝會(huì)是這個(gè)樣子的:之后,江提交了對(duì)integer.c的修改,建立了修訂版本6。如果采用svnupdte更新他自己的工作拷貝,就會(huì)看到:這里Makfil在456修訂版本都是一樣的,btto.c在5兩個(gè)修訂版本中都是一樣的。SV會(huì)把的Makfle和btto.c的修訂號(hào)都設(shè)為6來(lái)表明它是的。SVNSVN$svn 版本庫(kù)的建立(svnadminsvnamin是版本庫(kù)管理員的工具箱。SVN的版本庫(kù)建立就可以采用svnadmin工具中的子命令crete,即運(yùn)行:$svnadmincreate這樣就在 /hom/jiang/sv/下建立了一個(gè)默認(rèn)數(shù)據(jù)格式的新的版本庫(kù)。對(duì)于單一項(xiàng)目,SVN建議建立三個(gè)子 : 對(duì)于多項(xiàng)目,SVN建議根據(jù)項(xiàng)目彼此之間的關(guān)聯(lián)程度劃分為幾個(gè)組合,然后為每一個(gè)項(xiàng)/文件的初始化導(dǎo)入(svnsvnimprt通常用在需要將一組文件加入到SVN版本庫(kù)時(shí),不需要工作拷貝,將文件直接提交版本庫(kù)。例如:$svnimporttry_makefile:///home/jiang/svn/maketest/trunk -m“Initialimport” Committedrevision1./home/jiang/svn/maketest 工作拷貝的初始化檢出(svnsvncheckout命令將會(huì)在本機(jī)創(chuàng)建一個(gè)新的“工作拷貝”,從而可以開始使用SVN。注意該命令得到的是版本庫(kù)中的版本。例如:$svncheckoutfile:///home/jiang/svn/maketest/ Checkedoutrevision3. trunk,并導(dǎo)出了的修訂版本??梢允褂眠x項(xiàng)-r來(lái)得到過(guò)去版本的工作拷貝,如為了得到版本號(hào)為2的版本,可以運(yùn)行:$svncheckout-r2SVN工作拷貝的更新(svnsvnupdate將使得工作拷貝與版本庫(kù)中的版本同步,得到團(tuán)隊(duì)中其他所有人作出的修改。例如下面進(jìn)行了更新:$svn Checkedoutrevision4.這里表示其它人在上次更新之后提交了對(duì)right_tm和lfttop的修改,SVN更新了的工作拷貝引入了這些修改。 命說(shuō)svnadd 如果TEMP ,則所有TEMP中的內(nèi)容也會(huì)預(yù)定添svn e svncopyTEMP1 svnmoveTEMP1 svnmkdir創(chuàng)建新 $svnmkdirbranch $cd $cpMakefile1$svnaddMakefile1Makefile2 $svn Transmittingfiledata..Committedrevision這里提交 $svndeleteMakefile2 $svn Committedrevision5.檢查修改(svnstatus和svn通常在提交工作拷貝前,可以通過(guò)svnsttus瀏覽上次更新后所作的所有修改,或者利用svndff來(lái)查看修改的詳細(xì)信息。注意,這兩個(gè)命令的調(diào)用不需要聯(lián)系版本庫(kù),只是與.sv/中的原始數(shù)據(jù)進(jìn)行比較,因此可以在沒有網(wǎng)絡(luò)的狀態(tài)下工作。例如若修改了Makfile文件:main.oleft.omain.oleft.occ-o$@cc-o$@cc-ccc-ccc-ccc-ccc-ccc-ccc-c運(yùn)行svnstatus$svn 如果要檢查工作拷貝中的所有項(xiàng)目,即使是沒有改變過(guò)的,可以運(yùn)行svnsttus,并添加-v選項(xiàng),$svnstatus- 7 7 4 運(yùn)行svndiff$svnIndex:---Makefile2(revision+++Makefile2 (workingcopy)@@-1,9+1,12@@ main.oleft.o<TAB>cc-o$@-main.o:-<TAB>cc-c-right.o:-<TAB>cc-c- <TAB>cc-c+#main.o:+#<TAB>cc-c+#right.o:+#<TAB>cc-c +#<TAB>cc-c cc-c$svndiff>解決(svnupdate+svn這里假設(shè)首先分別update了各自的工作拷貝,更新到Version9。在Vrsion9的基礎(chǔ)上對(duì)Mkfle2作了修改,然后提交版本庫(kù)成功。更新版本庫(kù)為Version10。這時(shí)江剛剛在Version9的基礎(chǔ)上完成自己對(duì)Makfile2的修改,由于修改的部分與修改的部分,提交的時(shí)候?qū)@示:$svndiscoveredin'branch/Makefile2'.Select:(p)postpone,(df)diff-full,(e)edit,(r)(h)helpformoreoptions: Updatedtorevision這時(shí),SVN不會(huì)允許提交,這里的C表示江修改的文件brac/Mkfile2與服務(wù)器上最新版本的Mkfl2發(fā)生了,需要手工解決。對(duì)于每一個(gè)的文件,SVN會(huì)產(chǎn)生三個(gè)新的文件到該文件所在的中,分別是:這時(shí)Makefile2文件也會(huì)改變,SVN將在該文件中置入標(biāo)記(特殊的符號(hào))同時(shí)顯示沖Makefile2.r9(和江本 main.oleft.o<TAB>cc-o$@ main.oleft.o<TAB>cc-o$@try:main.oleft.o<TAB>cc-o$@#main.o:main.c#<TAB>cc-cmain.c%.c:#<TAB>cc-cright.c #<TAB>cc-cleft.o<TAB>cc-c#main.o:main.c#<TAB>cc-cmain.c #<TAB>cc-cright.c #<TAB>cc-cleft.o<TAB>cc-c#main.o:main.c#<TAB>cc-cmain.c #<TAB>cc-cright.c<<<<<<<.mineright.c:right_topright_btmleft.o:>>>>>>>#<TAB>cc-c<TAB>cc-c江的修本 main.oleft.o<TAB>cc-o$@#main.o:main.c#<TAB>cc-cmain.c #<TAB>cc-cright.c right_topright_btm#<TAB>cc-cleft.o<TAB>cc-cSVN不允許在這種情況下提交版本庫(kù)。如果已經(jīng)修改好Makfle2文件,首先需要運(yùn)行svnrsolved告訴SVN已經(jīng)解決,刪除Mkfle.mine、Makfile.r9和Makfle.r10,然后才能提交。$svnresolvedResolvededstateof這時(shí)運(yùn)行$ls,可以發(fā)現(xiàn)SVN自動(dòng)刪除了Makefile2.mineMakefile2.r9和Makefile2.r10工作拷貝的提交(svn解決后,就可以采用$svncommit命令進(jìn)行新版本的提交。屏幕會(huì)顯示GNUnano2.0.7 --Thisline,andthosebelow,willbeignored- Transmittingfiledata.Committedrevision日志信息一般寫入修改者信息、本次版本的修改內(nèi)容等。也可以采用-m選項(xiàng)完成日志的編寫,如:$svncommit–m“Makefile2iscorrectedby其檢查歷史(svnsvnog命令可以給出一個(gè)指定文件或的歷史信息,包括:文件/的修改者、修訂的版本號(hào)、日期、時(shí)間以及日志信息。在沒有提供路徑的情況下,svng將使用當(dāng)前目錄作為默認(rèn)的目標(biāo)。例如:$svnr9|jiang|2009-04-0218:22:19 (四,02 4月2009)|2linesAddingMakefilebyJiangr8|yang|2009-04-0218:17:34 (四,02 4月2009)|2linesInitialimport表示當(dāng)前在版本8的時(shí)候版本庫(kù)中才由建立該,江在版本9中增加了Makefile$svnlogr9|jiang|2009-04-0218:22:19 (四,02 4月2009)|2linesAddingMakefilebyJiang瀏覽版本庫(kù)(svn $svnlsfile:///home/jiang/svn/maketest/trunk SVN1stBranch(第一分支)1stBranch(第一分支)2ndBranch(第二分支

例如如果采用SVN開發(fā)了一個(gè)國(guó)內(nèi)就業(yè)的源代碼,而在和都需要建立類似 $svncopyfile:/// file:/// -m"creatingaprivatebranchof/trunk"Committedrevision21.這樣,江就從trunk創(chuàng)建了一個(gè)分支branchs/my_branc。這種創(chuàng)建方式不需要本地的工作拷貝。這里SVN并不拷貝所有的數(shù)據(jù),而是建立一個(gè)已存在 樹的,類似Unix中的 合并(svn如果在對(duì)主線truk進(jìn)行debg,江在自己的分支branches/my_brach上進(jìn)行開發(fā)。那么的一些更新很可能對(duì)江也是有用的。因此江在分支開發(fā)的過(guò)程中,應(yīng)該考慮在主線更新后將對(duì)自己有利的更新合并(merge)到自己的分支中。例如,版本號(hào)為20的trunk中存在Makefile2 main.oleft.o<TAB>cc-o$@<TAB>cc-c-o

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論