[size=medium]轉載:http://jiangzhengjun.iteye.com/blog/491824
[b]一、基本使用[/b]
[b]1、圖示說明:[/b]
灰色向右箭頭:本地修改過
藍色向左箭頭:SVN上修改過
灰色向右且中間有個加号的箭頭:本地比SVN上多出的檔案
藍色向左且中間有個加号的箭頭:SVN上比本地多出的檔案
灰色向右且中間有個減号的箭頭:本地删除了,而SVN上未删除的檔案
藍色向左且中間有個減号的箭頭:SVN上删除了,而本地未删除的檔案
紅色雙向箭頭:SVN上修改過,本地也修改過的檔案
[b]2、與代碼庫斷開連接配接[/b]
可以與代碼庫斷開,具體操作 右擊|小組|斷開連接配接...,在操作過程中可以删除svn相關管理檔案,也可保留。
[b]3、導入項目[/b]
可以從代碼庫上把工程導到本地,個體操作 檔案|導入...|SVN|從 SVN 檢出項目。注:在此操作過程中有一個“選擇檢出的方式”選項,有兩種,第一種是“做為新項目檢出,并使用建立項目向導進行配置(僅當資源庫中不存在.project工程檔案時才可用,意思是如果代碼庫中有了這個工程檔案,那麼它就認為這是一個資訊完整的工程,在導入的過程中就不需要再建立工程——選這選那的,因為.project工程檔案中已包含了這一些列的資訊,是以隻有在代碼庫中不存在.project工程檔案時才可選擇)”;第二種是“做為工作空間中的項目檢出”,這一選項不管代碼庫中是否有.project檔案都是可以選擇的,如果代碼庫中沒有.project檔案時,選擇此種方式,會建立一個簡單的工程,那不是Java工程,或其他代碼工程,這種工程無不進行相應手工設定是不能進行相應開發的,是以在代碼庫上無.project工程檔案導入時,最好選擇前一選項,根據建立項目向導來進行相應設定并自動生成.project工程檔案。
[b]4、添加檔案或目錄[/b]
如果将檔案添加到項目中,它不會自動成為版本控制的一部分 —— 您需要明确将其添加到特定的存儲庫中。右擊新檔案,然後選擇 Team > Add to Version Control。就是這樣!下一次将此項目中的變更送出給存儲庫時,新檔案也會檢入。
[b]5、忽略檔案[/b]
如果項目生成檔案,或者包括您不想檢入的 Subversion 存儲庫檔案,則可以通知 Subclipse 忽略它們。右擊您要在版本控制中排除的檔案或目錄,然後選擇 Team > Add to svn:ignore 即可顯示Add to svn:ignore 對話框。
[b]6、排除class檔案[/b]
不要把class目錄上傳到伺服器上,起初我沒有删掉它,更改送出沒有問題,但在更新時總是報錯:……Working copy not locked; this is probably a bug, please report svn:……,提示就是class目錄下的.svn有毛病。原因可能是在Eclipse編譯時,将src目錄下的svn配置一起編譯到了class檔案中,并且在編譯時先會删除class中的内容,再編譯,這就導緻了本地配置與配置庫上不一緻。需要注意的是,請不要将動态生成的目錄添加到SVN,否則其他人Check out的之後,再Update容易出錯,例如class目錄,不需要送出上去
[b]7、svn:need-lock屬性[/b]
可以用來在檔案(例如,對二進制檔案非常有用)上強加排斥鎖。一個定義了svn:need-lock屬性的檔案一次隻能被一個人修改。當該檔案被檢出時,它是隻讀的。如果你想修改該檔案,你需要首先使用"Team>Lock"菜單選項。之後,使用"Team> Unlock"釋放該檔案,或僅送出你的變化,也會釋放鎖,但别人的檔案還是隻讀的,隻有别人在擷取了鎖之後,再能修改該檔案。其實該屬性以一種強迫的屬形勢讓使用者在修改前一定要選擷取鎖,再能修改該檔案,這樣就不需要等到送出時再發現早已被别人鎖住了。
[b]8、Tag和Branch[/b]
在Subversion中,很容易建立新的tag和branch。你可以使用tag來辨別一個特定的版本(使用一種可讀的名字,例如"Release 1.0");而一個branch用于新的開發工作而不影響主源碼基(稱作trunk)。在一個branch上的開發仍會繼續進行,直到開發者已經為把變化內建回主trunk作好準備。
在Subversion中,branch和tag都是通過制作給定修訂的一個虛拟副本(以另一個名字和/或另一個目錄)建立的。在正常情況下,branch存儲在branches目錄下,tag位于tags目錄下,盡管在實踐中為了滿足你的工程你可以使用自己的任何定制。
從Eclipse中,"Team>Branch/Tag"菜單能夠使你建立branch和tag。其中,Browse按鈕提供了一種友善的方法來檢視有哪些branch和tag存在于倉庫中。
當你使用"Team>Switch"建立成功一個新的branch或tag時,你可以非常容易地在branches之間進行切換。無論何時你切換到一個不同的branch(或傳回到trunk),Subversion将僅更新檔案(它需要保持你的目前工作的副本與目的branch之間的同步)。
[b]二、SVN協同開發中的規範:[/b]
[b]1、先更新,再送出[/b]
如果别人和自己更改的是同一個檔案,那麼update時會自動進行合并,但如果修改的是同一行,那麼合并時會産生沖突。
更新時注意所更新檔案的清單,如果送出過程中産生了更新,則也是需要重新編譯并且完成自己的一些必要測試,再進行送出。
[size=xx-small][b]2、多送出[/b]
每次送出以幾小時為機關。在開發功能子產品的時候,可以每完成一個小細節功能的測試,就送出一次,在修改bug的時候,每修改掉一個bug并且确認修改了這個bug,也就送出一次。
[b]3、不要送出不能通過編譯的代碼[/b]
代碼在送出之前,首先要确認自己能夠在本地編譯。如果在代碼中使用了第三方類庫,要考慮到項目組成員中有些成員可能沒有安裝相應的第三方類庫。項目經理在準備項目工作區域的時候,需要考慮到這樣的情況,確定開發小組成員在簽出代碼之後能夠在統一的環境中進行編譯。
[b]4、每次送出必須書寫明晰的注釋[/b]
明晰的标注要能夠概要的描述所送出檔案的資訊,讓項目組其他成員在看到标注後不用詳細看代碼就能了解你所做的修改。
[b]5、送出時注意不要送出本地生成的檔案[/b]
例如eclipse中的.classpath檔案,Windows生成的縮略圖Thumbs.db,項目編譯生成的臨時檔案.obj, .class等等。如果項目中沒有進行這方面的配置來強行禁止送出這樣的檔案,請自覺不要送出這樣的檔案。送出了這樣的檔案後,别人在更新後就可能與本地的環境沖突進而影響大家的工作。
[b]6、不要送出自己不明白的代碼[/b]
代碼在送出入SVN之後,你的代碼将被項目成員所分享。如果送出了你不明白的代碼,你看不懂,别人也看不懂,如果在以後出現了問題将會成為項目品質的隐患。是以在引入任何第三方代碼之前,確定你對這個代碼有一個很清晰的了解。
[b]7、慎用鎖定功能[/b]
在項目中要慎用鎖定的功能,在你鎖定了一個檔案之後别人就無法繼續修改送出該檔案,雖然可以減少沖突的發生率,但是可能會影響項目組中其他人員的工作。平時隻有在編輯那些無法合并的檔案(例如圖檔檔案,flash檔案等)時,才适當的采用鎖定操作。[/size]