乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      eclipse下SVN subclipse插件

       cici0086 2011-06-24

      eclipse下SVN subclipse插件

      本文目的

      讓未使用過(guò)版本控制器軟件或者未使用過(guò)subversion軟件的人員盡快上手。

      subversion的使用技巧很多,這里只總結(jié)了最小使用集,即主要的基本功能,能夠用來(lái)應(yīng)付日常工作。

      因此不涉及subversion服務(wù)器端的搭建和配置。

      為什么要使用版本控制

      當(dāng)多人共同開發(fā)同一個(gè)軟件時(shí),會(huì)涉及源代碼的共享以及帶來(lái)的相關(guān)問(wèn)題,比如追究某個(gè)代碼是由誰(shuí)在什么時(shí)間修改的。

      下面列出版本控制帶來(lái)的好處:

      • 為團(tuán)隊(duì)提供了所有項(xiàng)目文檔的回退按鈕,個(gè)人IDE工具只能提供某個(gè)文件的回退按鈕,而不能做到,比如回退到2008年6月12日下午3點(diǎn)10分時(shí)的所有項(xiàng)目文件;
      • 支持多個(gè)開發(fā)人員在可控的方式下為相同的代碼工作;
      • 版本控制系統(tǒng)保存了文檔在過(guò)去的各個(gè)改動(dòng),便于查找是誰(shuí),在何時(shí),因?yàn)槭裁葱薷牧宋臋n;
      • 支持在文檔的主線上同時(shí)有多個(gè)版本(版本的分支和合并是版本控制的主要手段,一些開發(fā)團(tuán)隊(duì)僅僅是簡(jiǎn)單的共享代碼主干);
      • 支持查詢?cè)谀硞€(gè)時(shí)點(diǎn)上項(xiàng)目各個(gè)文檔的狀態(tài),可用于研究生產(chǎn)效率等(比如,統(tǒng)計(jì)項(xiàng)目哪個(gè)時(shí)期代碼提交最活躍,以及每個(gè)人的代碼提交頻次等等),也可用于對(duì)以前的軟件發(fā)行版的再發(fā)行(比如,以前構(gòu)建的2.0版本的安裝包丟失了,那么可以通過(guò)版本控制器記錄的歷史重新回溯到那個(gè)版本,然后重新構(gòu)建出安裝包)。

      為什么使用subversion

      首先,考慮的是使用免費(fèi)開源和輕量級(jí)的版本控制器。

      第二,要求使用比較廣泛,可選的有cvs和svn。

      這里選擇svn,主要考慮是比較好集成apache使用,提交代碼支持原子級(jí)操作(即,比如提交3個(gè)文件,如果因?yàn)榫W(wǎng)絡(luò)或者其他原因,上傳2個(gè)文件后中斷,svn能做到服務(wù)器端回滾到提交前的狀態(tài),而cvs做不到這點(diǎn),需要手工檢查和恢復(fù))。

      subversion的程序構(gòu)成

      subversion程序,和mysql很類似,是c/s結(jié)構(gòu)的,有客戶端和服務(wù)器端。服務(wù)器端和客戶端都是通過(guò)命令行方式啟動(dòng)和執(zhí)行的。本文只會(huì)使用到客戶端的命令。

      第三方提供了各種圖形界面的客戶端工具,比如eclipse插件subclipse,windows圖形界面工具tortoiseSVN。這些后面會(huì)提到它們的基本使用。

      subversion資源

      安裝subversion

      有關(guān)subversion和subclise的安裝暫略,因?yàn)槟壳疤峁┑奶摂M機(jī)開發(fā)環(huán)境已經(jīng)安裝和配置。

      tortoiseSVN,可到官方網(wǎng)站上下載最新版本的windows安裝包,默認(rèn)安裝,不需要做其他設(shè)置,安裝后需要重啟計(jì)算機(jī)。能在資源管理器中鼠標(biāo)右鍵菜單看到如下圖所示條目,就說(shuō)明安裝成功。

      image

      使用subversion

      日常工作中使用subversion僅僅是幾個(gè)命令或者操作,并不復(fù)雜。但是它內(nèi)部的一些機(jī)制需要逐漸去理解。

      檢出代碼

      在剛開始進(jìn)入一個(gè)開發(fā)隊(duì)伍的時(shí)候,已經(jīng)有版本控制和軟件項(xiàng)目,使用的第一個(gè)命令往往是檢出(checkout)代碼。或者當(dāng)使用和研究開源軟件的時(shí)候,也是第一個(gè)要用到這個(gè)命令。這個(gè)命令的作用是把項(xiàng)目的源代碼下載到用戶本地,并且?guī)в邪姹究刂菩畔ⅰ?/p>

      比如,執(zhí)行以下命令獲取一個(gè)項(xiàng)目的源代碼:

      svn co http://easymorse./svn/trunk/vfs.demo/

      這個(gè)命令將在本地當(dāng)前目錄建vfs.demo目錄并將該服務(wù)器目錄下的所有文件下載到本地,并且,會(huì)生成隱藏文件.SVN目錄,用于記錄版本控制信息。

      tortoiseSVN有圖形界面的檢出操作,但是命令行方便快捷,建議使用命令行。

      如果使用eclipse并安裝了subclipse插件,可以通過(guò)插件導(dǎo)入項(xiàng)目。

      image

      然后,

      image

      選擇或者新建資源庫(kù)位置,

      image

      選擇資源庫(kù)中的項(xiàng)目目錄。

      image

      然后,就可以完成(finish)了。

      image

      初始導(dǎo)入

      何時(shí)使用初始導(dǎo)入,比如,對(duì)于java開發(fā)人員來(lái)說(shuō),在eclipse中編寫了一個(gè)項(xiàng)目,并決定把項(xiàng)目共享到版本控制器上,這時(shí)就需要初始導(dǎo)入操作了。

      以下以subclipse為例說(shuō)明初始導(dǎo)入的步驟。

      第一步,選擇share project,共享你的項(xiàng)目:

      image

      選擇通過(guò)svn共享項(xiàng)目:

      image

      填寫svn提交的url:

      image

      這個(gè)url,需要subversion的管理員告知你,還有用戶名和密碼。如果想練習(xí)一下,google提供了免費(fèi)的svn,你可以通過(guò):http://code.google.com 申請(qǐng)項(xiàng)目,這樣就會(huì)有類似我上面的url和權(quán)限。

      然后可以直接點(diǎn)擊finish,完成初始提交。選擇next,可以做定制模塊名和初始提交的信息,一般不需要。

      如果你的svn服務(wù)器使用了https協(xié)議,需要接受一個(gè)數(shù)字證書,一般選擇永久接受。

      image

      之后,會(huì)要求輸入用戶名和密碼。建議勾選保存密碼,否則會(huì)很麻煩。

      image

      這樣,再看項(xiàng)目,會(huì)發(fā)現(xiàn)條目上多了問(wèn)號(hào),這時(shí)需要選擇哪些目錄和文件需要提交,哪些需要忽略,比如生成的class文件等。

      image

      選擇需要忽略的文件或者目錄,這時(shí)需要切換到導(dǎo)航視圖下才能看到所有文件和目錄:

      image

      從導(dǎo)航視圖看到的情況:

      image

      選中需要忽略的目錄和文件,操作svn:

      image

      然后提交整個(gè)項(xiàng)目即可。有關(guān)提交的操作見下文。

      更新項(xiàng)目

      項(xiàng)目在提交前,應(yīng)該先做更新項(xiàng)目操作。比如有一個(gè)文件a.txt,已經(jīng)提交到svn中,這樣,可能有其他用戶提交了新的改動(dòng)到a.txt,你現(xiàn)在又修改了a.txt,準(zhǔn)備提交你的改動(dòng)。先操作更新a.txt,這樣如果該文件在svn服務(wù)器已經(jīng)改動(dòng),會(huì)將改動(dòng)加入到當(dāng)前本地的a.txt中。

      在subclipse中的操作:

      image

      提交代碼

      提交代碼,一般會(huì)級(jí)聯(lián)當(dāng)前目錄下所有改動(dòng)的內(nèi)容。

      image

      刪除代碼

      對(duì)于不再使用的代碼,可以直接刪除掉,比如通過(guò)windows刪除文件,通過(guò)ubuntu的rm命令或者通過(guò)eclipse的delete功能,然后提交項(xiàng)目,subclipse會(huì)知道哪個(gè)文件被刪除了,并將這個(gè)變化通知給svn服務(wù)器。

      還原代碼

      如果代碼做了改動(dòng),可以是多個(gè)文件,也可以刪除了文件或者新增了文件,但是沒有提交到svn服務(wù)器,可以通過(guò)還原功能恢復(fù)到改動(dòng)前的樣子。

      image

      版本的分支與合并

      版本的分支和合并,是版本控制的核心功能。

      比如,軟件通過(guò)版本的分支,將項(xiàng)目分配給多人做分工開發(fā),通過(guò)版本合并,將這些分工實(shí)現(xiàn)的代碼合并到新的版本中;或者,修改代碼bug的時(shí)候,可以先打出一個(gè)版本分支,保留出現(xiàn)bug的版本,比如分支版本名稱為pre_fix_bug_2201,這里2201表示bug的代號(hào),然后針對(duì)這個(gè)分支做修改fix這個(gè)bug,再將修改后的內(nèi)容提交到一個(gè)新的分支版本,比如post_fix_bug_2201,再到適當(dāng)時(shí)候?qū)⑦@個(gè)分支合并到代碼主干中去。

      以上說(shuō)了一下版本分支與合并的用途,這里簡(jiǎn)單說(shuō)一下svn版本分支合并的基本原理。

      首先是版本分支,實(shí)際上是將當(dāng)前版本“copy”到分支上,非常類似windows下,將某個(gè)目錄的快捷方式復(fù)制到其他路徑。這種copy,可以說(shuō)是輕量級(jí)copy或者叫廉價(jià)copy,不是復(fù)制版本內(nèi)容,而是做一個(gè)內(nèi)部的引用。這樣的copy很快,對(duì)服務(wù)器也沒有空間上的開銷。

      版本的合并,是svn開發(fā)中的難點(diǎn),當(dāng)做版本合并的時(shí)候,服務(wù)器會(huì)試圖智能的合并同一個(gè)文件的不同版本,可能會(huì)帶來(lái)版本沖突,這需要操作者做手工的處理,消除版本沖突。合理分工的項(xiàng)目應(yīng)該可以通過(guò)管理手段盡量避免這種情況。

      以下是通過(guò)subclipse演示版本分支的操作。首先,項(xiàng)目文檔應(yīng)該已經(jīng)全部提交,然后,選擇

      image

      然后,填寫url,一般是在tags/目錄下:

      image

      然后默認(rèn)選項(xiàng),next即可,然后選擇finish按鈕。在svn的相應(yīng)路徑下就會(huì)有一個(gè)同名的項(xiàng)目。

      image

      打分支,實(shí)際上就是建立了一個(gè)項(xiàng)目的輕量級(jí)copy。

      如何從版本的一個(gè)分支切換到另外一個(gè)分支,這也是很重要的,它能幫助你輕松在不同的項(xiàng)目版本中自動(dòng)切換,而不必在eclipse里維持多個(gè)項(xiàng)目。

      image

      選擇要切換的項(xiàng)目版本路徑,或者直接輸入亦可。

      image 

      然后點(diǎn)擊ok后,項(xiàng)目即可切換到該版本下。

      在分支上做了改動(dòng),并且已經(jīng)提交(一般tags目錄下的項(xiàng)目約定是只讀的,不建議改動(dòng),這里是為了舉例方便),那么,可以將這個(gè)版本合并到trunk(主干)代碼中,讓主干也擁有最新的代碼。

      image 

      選擇需要合并的源,比如從tags上面一個(gè)版本,合并到主干(trunk)代碼中。

      image

      之后,需要設(shè)置一些合并的特性,這里默認(rèn)配置即可。

      image

      執(zhí)行完畢后,會(huì)有一個(gè)合并報(bào)告,可見沒有出現(xiàn)沖突情況。

      image

      這時(shí)候看源代碼,可以發(fā)現(xiàn)有改動(dòng),這些改動(dòng)就是合并過(guò)來(lái)的代碼。

      image

      改動(dòng)如果沒有問(wèn)題,就可以提交,這樣就完成了一次版本的合并工作。

       

       

      “還原”已經(jīng)提交的改動(dòng)

      如果文檔沒有提交,還原是很容易的,只需執(zhí)行還原(revert)就可以了。有時(shí)候,已經(jīng)提交了代碼,結(jié)果發(fā)現(xiàn)了問(wèn)題,需要回退到之前提交的版本,就不是很容易了。

      這時(shí)候的還原,其實(shí)是將以前的某個(gè)修訂本(revision)覆蓋當(dāng)前的本地工作拷貝。然后再提交這些改動(dòng),成為新的修訂本。

      下面演示一下。

      首先提交了一個(gè)版本的改動(dòng),這是以后需要還原回來(lái),這里,為了以后還原方便,要在提交的消息中說(shuō)明改動(dòng)了什么。(這一步在開發(fā)中是必須的,是紀(jì)律)

      image

      下面,再修改一下項(xiàng)目,然后提交一次,這里故意增加一個(gè)文件。

      image

      提交以后,后悔了,想恢復(fù)到前一個(gè)修訂版。雖然可以通過(guò)版本號(hào)進(jìn)行覆蓋還原,但是一般人是無(wú)法記憶這個(gè)版本號(hào)的,另外就是實(shí)際情況往往更復(fù)雜,不會(huì)像示例中那樣是相鄰的兩個(gè)修訂版。

      所以提交修訂版時(shí)的注解消息就顯得特別重要。

      這時(shí)可以通過(guò)svn的日志功能查看到這些版本和它們的注釋消息。

      image

      看到歷次版本的消息內(nèi)容。

      image

      這樣,根據(jù)注釋,我們很容易找到需要還原到以前的那個(gè)修訂版。如果不放心,我們還可以根據(jù)上下文菜單,對(duì)比兩個(gè)修訂版的區(qū)別。

      image

      看比較結(jié)果??梢钥闯觯黾恿艘粋€(gè)文件,另外一個(gè)文件中有一處差異。

      image

      那么,可以確定是從125修訂版恢復(fù)(還原)。

      image

      更改后的項(xiàng)目,相當(dāng)于用125修訂版還原了126修訂版。

      image

      可以看到126版本添加的文件不見了,另外VfsDemo.java文件也還原到125版本的內(nèi)容。這時(shí)提交將成為127版本,這個(gè)版本其實(shí)就是125版本。算是還原了主干(trunk)上的代碼。

      image

      刷新歷史,可以看到修訂版已經(jīng)生效。

      image

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多