<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java學習

    java學習

     

    svn使用

    1.svn環境搭建

    在應用myEclips 8.5做項目時,svn會成為團隊項目的一個非常好的工具,苦苦在網上尋求了一下午,終于整合好了這個環境,在這里簡單介紹下,希望能為剛開始用svn的朋友一點點幫助。

      svn環境需要(1)服務器端(2)客戶端(3)應用在myeclipse中的svn插件

      第一步,安裝svn服務器端。我用的是VisualSVN-Server-2.1.3這個版本的。

             安裝完后,打開VisualSVN-Server,創建一個根目錄test,則這個目錄在服務器的地址 為:https://192.168.1.66:8443/svn/test; ip地址為你本機的地址,8443是你安裝服務器時設定的端口。下來你可以設置用戶及權限。



      第二步,安裝客戶端, 我使用的是TortoiseSVN-1.6.10.19898-win32-svn-1.6.12這個版本的客戶端工具。隨意提供一個地 址:http://hlbr.onlinedown.net/soft.php?id=89603。 安裝完畢后重啟電腦,你會發現右鍵中多出來一些功能了,表明客戶端安裝成功。(附件中VisualSVN_Server安裝_配置_使用圖文教程.rar 是一個安裝教程)

       

       第三步,myeclips8.5下安裝svn插件。在官網http://subclipse.tigris.org/下載了最新插件 site-1.6.15.zip包,

    解壓后使用其features和plugins兩個文件夾,參考網上做法,去掉其中一些包,myEclipse啟動才不報錯。
          (1)MyEclipse 8.5根目錄D:\Program Files\Genuitec\MyEclipse 8.5下新建名為SVN的文件夾,將這兩個文件夾放進去。(后邊提供的SVN插件包就是我們要用到的SVN文件夾) 
          (2)在D:\Program Files\Genuitec\MyEclipse 8.5\dropins 目錄下建立一個SVN.link文件,其中內容為:
      path=D:\\Program Files\\Genuitec\\MyEclipse 8.5\\SVN  。也就是這個link指向剛才你建的文件夾。(后邊提供的SVN-link.rar是這個link文件)
          (3)重新啟動MyEclipse。

    第四步,介紹下如何使用svn來應用你的項目。
         (1)在myeclipse下新建一個項目svntest,右鍵team-Share Project,,然后選擇SVN,點next,--創建新的資源庫位置, 點next后輸入url:https://192.168.1.66:8443/svn/test,輸入用戶名和密碼后就在服務器端test目錄下預發布你的項目。
          (2)你會看到你項目中有?的標志,這時項目上右鍵team-提交,會發現你的項目問號消失,提交成功。到此你的項目發布成功了。
          (3)測試一下你發布的項目能否在局域網共享使用。客戶端只需安裝TortoiseSVN工具就可以下載你發布的項目了。團隊其他機子上新建一個文件夾名為svntest(名字任意),右鍵checkout,輸入服務器地址https://192.168.1.66:8443/svn/test,輸入用戶名和密碼。ok ,會提示下載成功。

           至此,svn在myeclipse8.5的環境搭建成功了。
           你可以在myeclipse中提交,更新,刪除,添加你對項目的修改,并更新到服務器中。團隊其他組員只需本機安裝客戶端,便可以從服務器端下載最新版本 的項目,使用時,應先進行update操作,保證你的是最新的版本。當修改一個頁面后,也應先update,再commit,防止沖突。
    2.建立版本庫,設置用戶和權限
    3.1 運行Subversion服務器需要首先要建立一個版本庫,可以看作服務器上存放數據的數據庫,在安裝了Subversion服務器之后,可以直接在控制 臺下運行:svnadmin create E:\chwencong\svnhome會自動在E:\chwencong\svnhome目錄下生成很多文件。

    3.2 修改配置文件,配置文件都存放在版本庫的conf目錄下,如E:\chwencong\svnhome\conf,里面有三個文件并對其做如下修改:

    3.2.1 修改svnserve.conf文件,去掉一下各行前面的“#”。
    anon-access = read
    auth-access = write
    password-db = passwd
    authz-db = authz
    realm = svnhome(注意)

    以上 realm 為 svn 庫的名稱,同一個 realm名稱會共享使用此SVN的用戶名和密碼

    3.2.2 修改passwd文件,建立用戶名與密碼,在[users]下面添加形如:username = password格式的行,一行代表一個用戶。

    admin = admin

    chwencong = 123

    3.2.3 修改authz文件,分配角色、權限

    [groups]

    manage = admin

    user = chwencong

    [/]

    @manage = rw

    @user = r

    以上的 manage=admin 和 user=chwencong 如果有多個用戶屬于此用戶組,則需用 逗號分隔用戶名, 如:
    manage=admin,root
    user=aa,cc,rr

    而 @manage 表示 manage 用戶組所擁有的權限,rw 代表可讀可寫,而 r 表示只可讀


    4、          啟動服務

    在控制臺下運行:svnserve -d -r E:\chwencong\svnhome(沒有分號)

    注意:不要關閉命令行窗口,關閉窗口也會把svnserve停止

    5、          導入、導出

    5.1導入:進入到待導入的目錄,如cd E:\chwencong\workspace\TestProject (TestProject為項目名),然后運行svn import svn://localhost/TestProject -m "initial import" --username admin --password admin

    正常情況就會在控制臺出現如下信息:

    增加           .classpath

    ……

    提交后的版本為 1。

    5.2 導出:進入到存放導出項目的目錄,如導出D:\code下:cd D:\code 然后運行svn checkout svn://localhost/TestProject --username chwencong --password chwencong

    正常情況就會在控制臺出現如下信息:

    A    svnhome\.classpath
    3.使用圖解
    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    首先就是安裝程序啦,這就不用講解了吧!


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    按照默認設置安裝完成后,重啟電腦,點擊右鍵會有如下兩個選項!選擇當前選項即打開SVN目錄!


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    輸入貴公司SVN地址!

    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    然后就可以看見工作目錄了。貴公司的所有工程文件都可以共享了。


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    如果你想下載某個文件夾或者文件的話,可以在文件上點擊右鍵,選擇CheckOut!


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    第一個是當前目錄,第二個是你想下載到你的電腦的什么地方,每個公司的要求不同!


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    想要添加文件的話,新建文件!


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    點擊右鍵,選擇Add選項,文件上方便會出現一個+字!


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    點擊右鍵,選擇SVN Commit便會提交了,其他人都可以看見你的文件了!提交完成后+號就變成綠色對勾了!

    有時候,因為Windows本身的問題,您可能會看到有些icon沒有變成綠色的勾勾。此時,多按F5幾次,應該就可以解決這個問題。如果,仍然不行,表示您之前的commit動作真的有問題。請仔細檢查之前的commit動作是否正確。



    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    為何需要更新?由于版本控制系統多半都是由許多人共同使用。所以,同樣的檔案可能還有人會去進行編輯。為了確保您工作目錄中的檔案與大家的檔案是同步的。建議您在編輯前都先進行更新的動作。在此,我們都先假設您已經將檔案check out過一次。現在要說明的是如何在一個check out過的目錄進行update。在想要更新的檔案或目錄icon上面按下鼠標右鍵。并且選擇SVN Update。

    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    有時我們需要回溯至特定的日期或是版本,這時就可以利用SVN的Update to revision的功能。在想要更新的檔案或目錄icon上面按下鼠標右鍵。并且選擇SVN->Update to revision。


    點擊后會彈出這個對話框,可以回溯到Head revision。當然也可以選擇特定的版本。記不住版本就選擇show log選擇一個!


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    每次改動前都要get lock,這樣其他人就不能更改此文件了。 不然兩個人修改同一個文件的話就麻煩了。鎖上后顯示一個小鎖!沒反應就F5刷新!


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    修改完畢后當然要解鎖了!Release lock!

    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------
    想在trunk下建立一個新的brance?在trunk上右鍵如下選擇。


    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    請先確認From WC at URL: 中的目錄是您要復制的來源目錄。接著,在To URL中輸入您要復制過去的路徑。通常我們會將所有的branch集中在一個目錄下面。以上面的例子來說,branch檔案都會集中在branch的子目 錄下面。在To URL中您只需要輸入您要的目錄即可。目錄不存在時,會由SVN幫您建立。特別需要注意的是SVN因為斜線作為目錄分隔字符,而非反斜線。

    接著在Log message輸入您此次branch的目的為何。按下OK就可以了。



    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    想要恢復,選擇Merge就ok了!

    ------------------------------------------------------- 我是分割線 --------------------------------------------------------------------------------------

    本節向大家描述一下版本控制工具SVN使用方法,在學習SVN過程中這是必須要掌握的知識,在這里和大家分享一下,歡迎大家和我一起學習SVN使用方法。

    SVN幫助:svnhelp

    (1)svnimport[PATH]URL
    將未納入版本控制的文件或目錄樹提交到版本庫。遞歸地提交PATH的副本至URL。如果省略PATH,則默認為“.”

    (2)svncheckoutURL[@REV]...[PATH]
    從版本庫簽出工作副本。如果指定REV,那么它確定了從URL首先查找的版本。如果省略路徑參數,則URL最末尾的目錄名作為目標目錄名。如果指定多個URL,則依次將其簽出到PATH的子目錄中,子目錄名就是URL最末尾的目錄名。

    (3)svnaddPATH
    把文件和目錄納入版本控制,通過調度加到版本庫。它們會在下一次提交時加入。

    (4)svncommit[PATH...]
    commit(ci):把工作副本的修改提交到版本庫。常用參數:-m[--message]ARG:指定日志信息ARG

    (5)svnupdate[PATH...]
    將版本庫的修改合并到工作副本中。如果沒有指定版本,則將工作副本更新到HEAD版本。否則同步到-r選項所指定的版本。

    (6)svndeletePATH-m"deletetestfle"
    或者直接svndeletetest.php然后再svnci-m'deletetestfile‘,推薦使用這種簡寫:svn(del,remove,rm)
    用法:1、deletePATH...
    2、deleteURL...
    1、每個PATH指定的項目會被調度到下次提交時從版本庫刪除。除非給出--keep-local參數,工作副本中沒有提交的文件和目錄會被立即刪除。如果PATH是未版本控制或者已修改的項目,或者包含這些項目,那么僅當給出--force參數時這些項目才會被刪除。
    2、每個URL指定的項目會通過立即提交從版本庫中刪除。

    (7)svnmkdir:創建納入版本控制的新目錄。
    用法:1、mkdirPATH...
    2、mkdirURL...
    1、每個以工作副本PATH指定的目錄,都會在本地創建,并且加入增加調度,直到下次提交。
    2、每個以URL指定的目錄,都會通過立即提交在版本庫中創建。

    (8)svnrevertPATH...:將工作副本文件恢復到原始版本(恢復大部份的本地修改)。注意:本子命令不會訪問網絡,它解除任何沖突的狀態。但是,它不恢復被刪除的目錄。

    (9)版本控制SVN使用其他命令還有:
    摘自:http://blog.chinaunix.net/u1/38994/showart_487961.html
    加鎖/解鎖svnlock-m"LockMessage"[--force]PATH
    例如:svnlock-m"locktestfile"test.php

    svnunlockPATH
    查看文件或者目錄狀態
    1)svnstatuspath(目錄下的文件和子目錄的狀態,正常狀態不顯示)【?:不在svn的控制中;M:內容被修改;C:發生沖突;A:預定加入到版本庫;K:被鎖定】
    2)svnstatus-vpath(顯示文件和子目錄狀態)
    第一列保持相同,第二列顯示工作版本號,第三和第四列顯示最后一次修改的版本號和修改人。
    注:svnstatus、svndiff和svnrevert這三條命令在沒有網絡的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。
    簡寫:svnst

    查看日志svnlogpath
    例如:svnlogtest.php顯示這個文件的所有修改記錄,及其版本號的變化

    查看文件詳細信息svninfopath
    例如:svninfotest.php

    比較差異svndiffpath(將修改的文件與基礎版本比較)
    例如:svndifftest.php

    svndiff-rm:npath(對版本m和版本n比較差異)
    例如:svndiff-r200:201test.php
    簡寫:svndi

    將兩個版本之間的差異合并到當前文件svnmerge-rm:npath
    例如:svnmerge-r200:205test.php(將版本200與205之間的差異合并到當前文件,但是一般都會產生沖突,需要處理一下)版本庫下的文件和目錄列表svnlistpath

    顯示path目錄下的所有屬于版本庫的文件和目錄
    簡寫:svnls
    版本控制SVN使用中解決沖突svnresolved:移除工作副本的目錄或文件的“沖突”狀態。
    用法:resolvedPATH...
    注意:本子命令不會依語法來解決沖突或是移除沖突標記;它只是移除沖突的相關文件,然后讓PATH可以再次提交。
    輸出指定文件或URL的內容。svncat目標[@版本]...如果指定了版本,將從指定的版本開始查找。svncat-rPREVfilename>filename(PREV是上一版本,也可以寫具體版本號,這樣輸出結果是可以提交的)

    代碼庫URL變更svnswitch(sw):更新工作副本至不同的URL。
    用法:1、switchURL[PATH]
    2、switch--relocateFROMTO[PATH...]
    1、更新你的工作副本,映射到一個新的URL,其行為跟“svnupdate”很像,也會將服務器上文件與本地文件合并。這是將工作副本對應到同一倉庫中某個分支或者標記的方法。
    2、改寫工作副本的URL元數據,以反映單純的URL上的改變。當倉庫的根URL變動
    (比如方案名或是主機名稱變動),但是工作副本仍舊對映到同一倉庫的同一目錄時使用這個命令更新工作副本與倉庫的對應關系。本節關于版本控制SVN使用介紹完畢。

    本節和大家一起學習一下SVN使用方法,主要從三方面來介紹,在這里和大家分享一下,希望本節的介紹對你的學習有所幫助。

    SVN使用:

    1. 首先是安裝TortoiseSVN這個Win下的客戶端(當然用subversion自己的svn這個客戶端也可以完成所有操作,理論上)。這個客戶端是集成到Explore里的,所以沒有什么獨立的窗體,所有操作右鍵菜單來完成。

    2. SVN使用基本流程
    下面說的命令都與TortoiseSVN菜單上的名稱一致。
    a. 初次(initial)取出(checkout)repos,建立本地工作拷貝(WC WorkingCopy)。
    b. 與repos同步(update),保證將要進行的編輯是最新版本。
    c. 編輯源代碼(包括創建、修改、刪除)。
    d. 與repos同步(update),提交之前先要同步到最新的版本,保證所有在自己之前的有關提交已經在本地有所知曉。
    e. 解決沖突(resolve conflict)。
    f. 提交(commit),一定要寫上這次提交的內容的摘要,便于以后查閱。
    g. 繼續b。
    每次開始新的編輯前的同步repos很重要,另外經常地update沒有壞處,特別是多人項目中。如果每次提交(commit)前不進行更新(update)的到最新的版本的話,svn會提示當前的拷貝過期,需要更新。
    在 使用的過程中,時刻注意當前的工作拷貝(WC WorkingCopy)所對應的URL很重要,特別是當有了branches和tag等時候。使用svn info可以查看到這些信息。使用TortoiseSVN時,通過下面的操作查看這些信息:右鍵單擊工作拷貝的根文件夾(不是上級文件夾),菜單中選擇則 屬性(不是TortoiseSVN那個菜單),然后在出現的對話框中選擇Subversion標簽就可以看到了。

    3. SVN使用branches
    (關于branches的內容可以在svn-book:Chapter4 Branching and Merging得到)
    當 多個人合作(Sally和John)時,可能有這樣的情況出現:John突然有個想法,跟原先的設計不太一致,可能是功能的添加或者日志格式的改進等等, 總而言之,這個想法可能需要花一段時間來完成,而這個過程中,John的一些操作可能會影響Sally的工作,John從現有的狀態單獨出一個 project的話,又不能及時得到Sally對已有代碼做的修正,而且獨立出來的話,John的嘗試成功時,跟原來的合并也存在困難。這時最好的實踐方 法是使用branches。John建立一個自己的branch,然后在里面實驗,必要的時候從Sally的trunk里取得更新,或者將自己的階段成果 匯集到trunk中。
    附:TortoiseSVN幫助里的branch的說明:
    One of the features of version control systems is the ability to isolate changes onto a separate line of development. This line is known as a branch. Branches are often used to try out new features without disturbing the main line of development with compiler errors and bugs. As soon as the new feature is stable enough then the development branch is merged back into the main branch (trunk).

    3.1 創建branch
    (詳細的解釋參考svn-book:Chapter4 Branching and Merging:Using Branches:Creating a Branch)
    實際是svn copy操作
    $ svn copy SourceURL/trunk \
    DestinationURL/branchName \
    -m "Creating a private branch of xxxx/trunk."
    TorToiseSVN 操作更為簡單,只要在working copy里右鍵空白,然后在TorToiseSVN菜單中選擇Branches/Tags,就可將整個目錄分支(branch)出去,或者點擊某個文件將 文件單獨分支(branch),而且有多種選擇,指定是“直接在服務器端copy HEAD版本”、“直接在服務器端copy指定版本”(這兩種相當于svn copy中源和目的都是URL)、“用當前的工作拷貝(WC Working Copy)生成”。同時還有一個checkbox用于在完成了這次分支(branch)后直接切換(switch)當前的工作拷貝(WC Working Copy)到分支。

    3.2SVN使用中 使用merge來應用branch的修改

    3.2.1 trunk的變化及時更新到branch
    例子原型出自svn-book:Chapter 4:Branching and Merging:Copying Changes Between Branches:Copying Specific Changes
    接 著前面的例子,John在實驗過程中,Sally對原有的某個文件做了一些改動,如拼寫檢查等,John知道了,希望將這些改動也放到自己的當前的工作拷 貝(WC Working Copy)中。svn中使用merge指令來完成。假設Sally的修訂使repos從Rev345到了Rev346,所以John就是要將 Rev345:Rev346(前:后)的變更應用到當前的WC。使用TortoiseSVN的操作就是在WC中右鍵空白處,然后在相關菜單中選擇 “Merge...”,在彈出的對話框中,From指定比較前項的位置和版本(這里是trunk的Rev345),To指定后項的位置和版本(這里是 trunk的Rev346,可以使用一個復選框使的To的位置與From相同)。
    相應的svn merge指令參考后面“merge操作實質”可知。

    3.2.2 branch最終合并回trunk
    例子原型出自svn-book:Chapter 4:Branching and Merging:Common Use-Cases:Merging a Whole Branch to Another
    John經過嘗試,終于實現了想法,并通過測試,現在他決定將所有的工作合并到trunk去。
    這 里要注意的是,John打算合并的是自己的工作,假設John的branch(johnBranch)開始于Rev233,John的工作提交到 repos是Rev289,那么John的工作是將johnBranch:Rev233到johnBranch:Rev289的內容合并到trunk。而 不是johnBranch:Rev233到trunk:HEAD,因為這個變化包含了對John工作的增加和對trunk中其他人的工作的撤銷(如果 John沒有及時將他人在trunk的工作合并到自己的johnBranch的話)。
    TortoiseSVN的操作是這樣的,先 checkout出trunk(也可以switch到trunk),即保證當前的工作拷貝(WC WorkingCopy)是trunk,然后使用菜單中的“Merge...”,選擇From為johnBranch:Rev233選擇To為 johnBranch:Rev289。
    相應的svn merge指令參考后面“merge操作實質”可知。 下面我們來看一下SVN使用中merge操作的實質。

    3.2.3 merge操作的實質
    svn merge命令的原型如下
    svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
    svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
    svn merge -r N:M SOURCE[@REV] [WCPATH]
    In the first and second forms, the source paths (URLs in the first form, working copy paths in the second) are specified at revisions N and M. These are the two sources to be compared. The revisions default to HEAD if omitted.
    In the third form, SOURCE can be a URL or working copy item, in which case the corresponding URL is used. This URL, at revisions N and M, defines the two sources to be compared.
    WCPATH is the working copy path that will receive the changes. If WCPATH is omitted, a default value of “.” is assumed, unless the sources have identical basenames that match a file within “.”: in which case, the differences will be applied to that file.
    可以看出merge實際是比較前后(源:目的)兩個版本 (revision)之間的差別(用運算符就是 目的 – 源),然后將這些差別應用(施用)到工作拷貝(WC WorkingCopy)上的一個操作,根據源與目的版本號的先后,出現了“合并”、“撤銷”(源版本號大于目的版本號)等不同效果,然后通過提交 (commit)來將這些效果保存到服務器端的repos中。本節關于SVN使用方法介紹完畢。

    訪問Google code

    Google code的地址是 http://code.google.com/  ,如果使用cn去訪問好像訪問不了,我這里是一片空白。管理項目的話可以直接使用http://code.google.com/hosting/ 地址訪問。用Gmail登錄進去,頁面的中間有【Create a new project 】,點擊以后就可以創建項目了。

     

     

    二 創建自己的項目

    在創建項目的頁面,填寫項目名,概要和描述,其中項目名開頭要小寫,還不能有空格和其他符號。然后就是選擇版本管理系統,證書等等,這些我也不懂,隨便選 吧,反正這有選好了,【Create Project】才可用。這里要注意的是項目名字可能沖突。如果創建成功就可以進入項目管理界面

     

    三 項目管理

    項目管理中,上方的菜單【Project Home】可以看到項目的概述和描述。點擊【Source】就可以進行源碼的管理。其中有2個地址,一個是Https開頭的,一個是http 的,https開頭的是帶加密的,所以如果要commit新的代碼的時候就需要使用這個地址。而如果僅僅是取得代碼可以只使用http開頭的地址。

     

    使用https的地址的時候需要提供用戶名和密碼,這里的用戶名是Gmail的用戶名,而密碼是Google給每個項目生成的,而非是Gmail的密碼。點擊【When prompted, enter your generated googlecode.com password 】后面的藍色連接可以看到密碼。這個密碼是你所有項目的密碼,而不是每個項目一個密碼。

    四 用戶管理

    項目建立好以后就可以把其他人加入到項目中,這樣就可以共同開發了。首先點擊上方的【Administer】,然后點【Project members】,在下面填入要加入的用戶Gmail就可以了。有Project owners,Project committers,Project contributors。具體解釋右側都有。點擊保存后,其他用戶登錄后,在右上方的【My Favorite】下就可以看到自己加入的項目了。然后按三中介紹的方法找到密碼。

     

     

    五 其他管理

    Google Code還提供了wiki等功能,我沒用上,所以不是太了解。

     

     

    六 安裝客戶端和VS插件

    上面的工作做好后就是上傳源碼和文檔。但是我找了半天也不知道怎么上傳。以為是直接網頁上上傳,原來也要安裝SVN客戶端。在這里

    http://tortoisesvn.net/downloads  可以下載到最新的TortoiseSVN,這個應該是目前用的最多的SVN客戶端軟件了。E文不好的朋友上面還提供了中文語言包。

    安裝完客戶端后需要重啟電腦,然后就可以遠程連接到SVN服務器了。其中URL就填寫Google 提供的哪個https的URL地址,然后填寫用戶名(Gmail)和密碼(項目密碼),保存后就OK了。客戶端可以支持連接多個URL,每次啟動的時候可 以選擇要連接到那一個。

     

    支持SVN的VS插件我使用的是AnkhSvn,http://ankhsvn.open.collab.net/servlets/ProjectDocumentList?folderID=198 這里可以下載到最新版本。目前可以支持到VS2010,之前使用老版本對VS2008支持不好,文件狀態不對,而且不能提交,換到最新版的時候就好了。安裝的時候配置VS要比較長時間,不要以為是死掉了。

     

    如果只安裝AnkhSvn而不安裝TortoiseSVN也是可以的,不過你在VS中會發現,操作的功能少了很多,比如分支,合并等等。

     

    七 使用VS進行開發和源碼管理

    進入到VS中,打開【工具】--【選項】--【Source Control】,默認應該是已經配置好了為AnkhSvn。然后可以點擊【文件】-【Subvwrsion】打開服務器上的源碼。和其他工具一樣,要選擇一個本地路徑來保存。

     

     

    1:文件狀態介紹

    藍色小勾:Check out狀態;橙色小勾:文件被修改狀態;橙色小方塊:文件修改被保存;加號:新添加文件。

     

    2:SNV版本控制

    和VSS不同的時,VSS默認是鎖住的狀態,需要手動Check Out,而SVN是自動Check Out。那么這樣不是會有沖突嗎,其實這個和VSS允許多人牽出是一樣的。在你Commit的時候,會檢查版本,會自動合并或提示沖突或是版本過期等等。

     

    獲取最新代碼:這個不用說了就是從服務器上拿最新代碼,但是如果你修改了文件,然后拉最新代碼,這個時候系統會自動吧你修改的不部分和最新代碼進行合并,如果有沖突會提示,要修修改沖突。

     

    獲取指定版本代碼:這個可以通過查看歷史,或者指定版本號來拉去指定版本的代碼。這是同樣會合并代碼。需要注意的是,SVN的版本號和VSS不同,是全局版本號,而不是每個文件有一個版本號。這個要特別注意,因為你會發現一個文件版本號可能是跳躍的。

     

    Switch:有這樣一個功能,可以把當前版本切換為制定的版本,和獲取指定版本不同,他也會自動合并不同的地方。

     

    Revert:恢復功能,恢復到修改前的狀態。這個要注意的是,如果你對文件修改,然后獲取了最新代碼,然后恢復,這個時候是恢復到最新版本,而不是修改前的那個版本。這點要注意

     

    版本沖突:這里版本沖突有2種情況,

    如果你當前版本為1,服務器版本為2,你修改或提交,服務器會提示你本地版本過期了,你可以拉最新代碼,并解決沖突后再次提交;

    如果你當前版本為2,服務器版本為2,而你從服務器獲取版本1的代碼,修改后,然后提交,這個時候是不會提示版本過期的,會覆蓋掉服務器上的版本2,而成為版本3。這樣是會沖掉代碼的。

     

    鎖:SVN提供了鎖的功能,就和VSS的單用戶Check out是一樣的,不能同時修改。但是目前Google Svn不提供鎖的功能,所以沒有辦法使用了。

    myeclipse安裝svn

    一、安裝方法:

     方法一、如果可以上網可在線安裝

      1. 打開Myeclipse,在菜單欄中選擇Help→Software Updates→Find and Install;

      2. 選擇Search for new features to install,點擊Next進入下一步;

      3. 點擊"New Remote Site"按鈕,在彈出的對話框中輸入:

       name:SVN

       url:http://subclipse.tigris.org/update_1.4.x

       點擊OK,關閉對話框,并點擊Finish按鈕,Myeclipse自動下載插件安裝程序;

      4. 下載完插件之后,進入安裝畫面。

      5. 選擇所要安裝的SVN插件內容,這里去掉第二個選項Subclipse Integrations,點擊下一步;

      6. 選擇 "I accept the terms in the license agreements"并點擊Next,直到點擊Finish即可,進入下一步。

      7. 開始安裝SVN插件,安裝完成之后,重啟Myeclipse。

     

     方法二、無法連接網絡的情況

      1、下載SVN插件
      下載地址:http://subclipse.tigris.org/files/documents/906/46495/site-1.6.5.zip

      2. 在MyEclipse 6.5的安裝路徑下的plug_in(C:/Program Files/MyEclipse 6.5/eclipse/plugins)下新建文件夾:site-1.6.5;

      3. 打開MyEclipse 6.5,在菜單欄中選擇 Help → Software Updates → Find and Install;

      2. 選擇Search for new features to install,點擊Next進入下一步;

      3. 點擊"New Local Site"按鈕,找到解壓出來的文件夾(site-1.6.5) → 點擊OK,并點擊Finish按鈕,Myeclipse自動加載插件;

      4. 在彈出的菜單中,select the features to insteall:在剛加進去的路徑Subclipse-site-1.6.5這一項前打鉤,此時會報錯,然后展開Subclipse前的加號,去掉 Subclipse Integration for Mylyn 3.x(Optional)3.0.0前的鉤,錯誤消失 → next → 選 I accept the terms in the license agreements → next → next → 選中所有的8項,然后Change Location……,在彈出的菜單中選Add Location……選擇在第3步中建的文件夾的路徑(C:/Program Files/MyEclipse 6.5/eclipse/plugins/site-1.6.5) → Finish → 再彈出的菜單中選 Install All → Yes

      5. 開始安裝SVN插件,安裝完成之后,重啟Myeclipse。

     方法三、無法連接網絡的情況(link鏈接)

      1、從官網下載 Site-1.6.5.zip 

      2、解壓Site-1.6.5.zip至${eclipse}/Plugins/Subclipse-1.6.5.zip,并刪除 site.xml(很重要)(即把Site-1.6.5.zip解壓出來的features和plugins文件夾里所有的jar包和兩個XML文件 artifacts.xml、content.xml添加并替換到plugins文件夾下。例如:我應添加在C:/Program Files/MyEclipse 6.5/eclipse/plugins/目錄下)

      3、創建link文件 ${eclipse}/linksSubclipse-1.6.5.zip.link (即在link文件夾下添加linksSubclipse-1.6.5.link文件)其內容為:  path=C:/Program Files/MyEclipse 6.5/eclipse/

      4、重啟Eclipse就是把subclipse集成完畢


    二、安裝完成

     1. 在MyEclipse 6.5 菜單欄中選擇Window→Open Perspective→Other打開Myeclipse試圖列表。這個時候Myeclipse的視圖列表中,就出現了"SVN Repository Exploring"一項。

     2. 打開"SVN Repository Exploring"視圖。在左邊空白區域,單擊右鍵 → New → Repository Location。

     3. 在Url一欄中輸入svn://IP,點擊Finish按鈕。

     4. 選擇要下載的項目右鍵選擇checkout 就把項目下載到本地了

    三、基本操作

     1.提交工程

          右擊工程->小組->共享項目->選擇SVN->選擇svn://127.0.0.1(如果沒有,則創建一個新的資源庫)->下一步->完成

      2.下載工程

          在SVN資源庫透視圖下,點開svn://127.0.0.1,會顯示出現在本機SVN上的所有工程,右擊你想下載的工程->檢出為->下一步->完成

     3.操作工程

          3.1同步

       在MyEclipse J2EE透視圖下,右擊你要同步的工程->小組->與資源庫同步->這時會進入同步透視圖,會顯示出本機與SVN上內容有不同的文件,雙擊文件名,會顯示出兩個文件中哪里不同;

          3.2提交

       在同步透視圖下有"灰色向右的箭頭,表示你本機修改過",右擊該文件,可以選擇提交操作;

          3.3覆蓋/更新

       在同步透視圖下有"藍色向左的箭頭,表示你本機修改過",右擊該文件,可以選擇覆蓋/更新操作;

      4.圖標說明

          4.1灰色向右箭頭:本地修改過

          4.2藍色向左箭頭:SVN上修改過

          4.3灰色向右且中間有個加號的箭頭:本地比SVN上多出的文件

          4.4藍色向左且中間有個加號的箭頭:SVN上比本地多出的文件

          4.5灰色向右且中間有個減號的箭頭:本地刪除了,而SVN上未刪除的文件

          4.6藍色向左且中間有個減號的箭頭:SVN上刪除了,而本地未刪除的文件

          4.7紅色雙向箭頭:SVN上修改過,本地也修改過的文件

      5.一些我遇到的出錯信息

          5.1在上面講的3.2步輸入URL(svn://127.0.0.1)點下一步出現"svnserve.conf:12: Option expected"錯誤

       你打開svnserve.conf文件中的第12行,該錯誤是由于該行的前面有空格引起的,把左邊多出的空格刪除掉即可;

          5.2在上面講的3.2步輸入URL(svn://127.0.0.1/SVN_PRJ)點下一步出現"svn://127.0.0.1/SVN_PRJ non-existent in revision '7'"錯誤

       URL錯了,應該輸入svn://127.0.0.1即可


      使用link方式安裝以后,如果啟動MyEclipse會產生一個沖突
    例如: org.tigris.subversion.clientadapter.javahl.win32 1.6.4.jar和eclipse的沖突,還有什么mlyn包沖突,出現紅X,安裝不成功...
    原因是因為插件包中的該jar和eclipse內部的jar包沖突造成的,所以可以選擇讓myeclipse忽略這些沖突的jar即可,找 到${MyEclipse_HOME}/home/xuliang/Genuitec/MyEclipse 8.5 M2/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info文件,此 處會列出eclipse啟動時候可以忽略的插件jar.你會找到你自己的svn插件的默認忽略的jar,例如:
    org.tigris.subversion.clientadapter,1.6.4.1,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tigris.subversion.clientadapter_1.6.4.1.jar,4,false
    org.tigris.subversion.clientadapter.javahl,1.6.4.1,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tigris.subversion.clientadapter.javahl_1.6.4.1.jar,4,false
    org.tigris.subversion.clientadapter.svnkit,1.6.4,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tigris.subversion.clientadapter.svnkit_1.6.4.jar,4,false
    org.tigris.subversion.subclipse.core,1.6.5,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tigris.subversion.subclipse.core_1.6.5.jar,4,false
    org.tigris.subversion.subclipse.doc,1.3.0,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tigris.subversion.subclipse.doc_1.3.0.jar,4,false
    org.tigris.subversion.subclipse.graph,1.0.7,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tigris.subversion.subclipse.graph_1.0.7.jar,4,false
    org.tigris.subversion.subclipse.ui,1.6.5,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tigris.subversion.subclipse.ui_1.6.5.jar,4,false
    org.tmatesoft.svnkit,1.3.0.5847,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tmatesoft.svnkit_1.3.0.5847.jar,4,false

    以上這些是默認情況下eclipse葫蘆的svn jar,所以加上以下2句,把剛剛沖突的包忽略就OK了
    org.tigris.subversion.clientadapter.javahl.win32,1.6.4,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tigris.subversion.clientadapter.javahl.win32_1.6.4.jar,4,false
    org.tigris.subversion.subclipse.mylyn,3.0.0,file:/home/xuliang/Genuitec/MyEclipse 8.5 M2/myplugin/svn-plugin/plugins/org.tigris.subversion.subclipse.mylyn_3.0.0,4,false

    總結:其實以上4種方法中的最后一種也是這個原理,只是他使用java來做這件事情
    我們在一些著名開源項目的版本庫中,通常可以看到trunk, branches, tags等三個目錄。由于SVN固有的特點,目錄在SVN中并沒有特別的意義,但是這三個目錄卻在大多數開源項目中存在,這是因為這三個目錄反映了軟件開發的通常模式。

    trunk是主分支,是日常開發進行的地方。

    branches是分支。一些階段性的release版本,這些版本是可以繼續進行開發和維護的,則放在branches目錄中。又比如為不同用戶客制化的版本,也可以放在分支中進行開發。

    tags目錄一般是只讀的,這里存儲階段性的發布版本,只是作為一個里程碑的版本進行存檔。

    比如一個項目有main.cpp, common.h兩個文件,假設目前在開發的是最新的3.0版本,而且1.0/2.0版本也在進行維護,那么項目樹將類似如下樣子:

    project
      |
      +-- trunk
      +     |
      +     +----- main.cpp  (3.0版本的最新文件)
      +     +----- common.h
      +
      +-- branches
      +     |
      +     +-- r1.0
      +     +     |
      +     +     +---- main.cpp (1.x版本的最新文件)
      +     +     +---- common.h 
      +     +
      +     +-- r2.0
      +           |
      +           +---- main.cpp (2.x版本的最新文件)
      +           +---- common.h
      +      
      +-- tags   (此目錄只讀)
            |
            +-- r1.0
            +     |
            +     +---- main.cpp (1.0版本的發布文件)
            +     +---- common.h 
            +
            +-- r1.1
            +     |
            +     +---- main.cpp (1.1版本的發布文件)
            +     +---- common.h
            +
            +-- r1.2
            +     |
            +     +---- main.cpp (1.2版本的發布文件)
            +     +---- common.h 
            +
            +-- r1.3
            +     |
            +     +---- main.cpp (1.3版本的發布文件)
            +     +---- common.h
            +
            +-- r2.0
            +     |
            +     +---- main.cpp (2.0版本的發布文件)
            +     +---- common.h 
            +
            +-- r2.1
                  |
                  +---- main.cpp (2.1版本的發布文件)
                  +---- common.h


    要使用這樣的文件夾結構,在建立項目版本庫時,可首先建好項目文件夾,并在其中建立trunk, branches, tags三個空的子目錄,再將項目文件夾連同這三個子目錄一起導入版本庫。

    這樣在trunk中開始進行開發,當需要建立branch或tag時,使用SVN的copy操作進行。

    其中tags目錄需要只讀,可以使用SVN中的authz文件控制該目錄的訪問權限為只讀。

    一.提交之前先更新

    1.         SVN更新的原則是要隨時更新,隨時提交。當完成了一個小功能,能夠通過編譯并且自己測試之后,謹慎地提交。

    2.         如果在修改的期間別人也更改了svn的對應文件,那么commit就可能會失敗。如果別人和自 己更改的是同一個文件,那么update時會自動進行合并,如果修改的是同一行,那么合并時會產生沖突,這種情況就需要同之前的開發人員聯系,兩個人一起協商解決沖突,解決沖突之后,需要兩人一起測試保證解決沖突之后,程序不會影響其他功能。

    3.         在更新時注意所更新文件的列表,如果提交過程中產生了更新,則也是需要重新編譯并且完成自己的一些必要測試,再進行提交。這樣既能了解別人修改了哪些文件,同時也能避免SVN合并錯誤導致代碼有錯

    二.保持原子性的提交

    每次提交的間歇盡可能地短,以幾個小時的開發工作為宜。例如在更改UI界面的時候,可以每完成一個UI界面的修改或者設計,就提交一次。在開發功能模塊的時候,可以每完成一個小細節功能的測試,就提交一次,在修改bug的時候,每修改掉一個bug并且確認修改了這個bug,也就提交一次。我們提倡多提交,也就能多為代碼添加上保險。

    三.提交時注意不要提交本地自動生成的文件

    一般配置管理員都會將項目中一些自動生成的文件或者與本地配置環境有關的文件屏蔽提交(例如eclipse中的.classpath文件等)。如果項目中沒有進行這方面的配置來強行禁止提交這樣的文件,請自覺不要提交這樣的文件。提交了這樣的文件后,別人在更新后就可能與本地的環境沖突從而影響大家的工作。

    四.不要提交不能通過編譯的代碼

    代碼在提交之前,首先要確認自己能夠在本地編譯。如果在代碼中使用了第三方類庫,要考慮到項目組成員中有些成員可能沒有安裝相應的第三方類庫。項目經理在準備項目工作區域的時候,需要考慮到這樣的情況,確保開發小組成員在簽出代碼之后能夠在統一的環境中進行編譯。

    五.不要提交自己不明白的代碼

    代碼在提交入SVN之后,你的代碼將被項目成員所分享。如果提交了你不明白的代碼,你看不懂,別人也看不懂,如果在以后出現了問題將會成為項目質量的隱患。因此在引入任何第三方代碼之前,確保你對這個代碼有一個很清晰的了解。

    六.提前協調好項目組成員的工作計劃

    項 目經理應該合理分配工作計劃。每個成員在準備開始進行某項功能的修改之前,如果有可能,先跟工作小組的成員談談自己的修改計劃,讓大家都能了解你的思想, 了解你即將對軟件作出的修改,這樣能盡可能的減少在開發過程中可能出現的沖突,提高開發效率。同時你也能夠在和成員的交流中發現自己之前設計的不足,完善 你的設計。

    七.對提交的信息采用明晰的標注

    在一個項目組中使用SVN, 如果提交空的標注或者不確切的標注將會讓項目組中其他的成員感到很無奈,項目經理無法很清晰的掌握工作進度,無法清晰的把握此次提交的概要信息。在發現錯 誤后也無法準確的定位引起錯誤的文件。所以,在提交工作時,要填寫明晰的標注,能夠概要的描述所提交文件的信息,讓項目組其他成員在看到標注后不用詳細看 代碼就能了解你所做的修改。

    八.慎用鎖定功能

     

    在項目中要慎用鎖定的功能,在你鎖定了一個文件之后別人就無法繼續修改提交該文件,雖然可以減少沖突的發生率,但是可能會影響項目組中其他人員的工作。平時只有在編輯那些無法合并的文件(例如圖片文件,flash文件等)時,才適當的采用鎖定操作。

    負責而謹慎地提交自己的代碼

    SVN更新的原則是要隨時更新,隨時提交。當完成了一個小功能,能夠通過編譯并且并且自己測試之后,謹慎地提交。

    如果提交過程中產生了沖突,則需要同之前的開發人員聯系,兩個人一起協商解決沖突,解決沖突之后,需要兩人一起測試保證解決沖突之后,程序不會影響其他功能。

    如果提交過程中產生了更新,則也是需要重新編譯并且完成自己的一些必要測試,再進行提交。

     

    保持原子性的提交

    每次提交的間歇盡可能地短,以一個小時,兩個小時的開發工作為宜。如在更改UI界面的時候,可以每完成一個UI界面的修改或者設計,就提交一次。在開發功能模塊的時候,可以每完成一個小細節功能的測試,就提交一次,在修改bug的時候,每修改掉一個bug并且確認修改了這個bug,也就提交一次。我們提倡多提交,也就能多為代碼添加上保險。

     

    不要提交自動生成的文件

    Visual Studio在生成過程中會產生很多自動文件,如.suo等配置文件,Debug,Release,Obj等編譯文件,以及其他的一些自動生成,同編譯代碼無關的文件,這些文件在提交的時候不應該簽入,如果不小心簽入了,需要使用Delete命令從倉庫中刪除。

     

    不要提交不能通過編譯的代碼

    代碼在提交之前,首先要確認自己能夠在本地編譯。如果在代碼中使用了第三方類庫,要考慮到項目組成員中有些成員可能沒有安裝相應的第三方類庫或者沒有放入GAC(針對.Net Framework)中,項目經理在準備項目工作區域的時候,需要考慮到這樣的情況,確保開發小組成員在簽出代碼之后能夠在統一的環境中進行編譯。

     

    不要提交自己不明白的代碼

    代碼在提交入SVN之后,你的代碼將被項目成員所分享。如果提交了你不明白的代碼,你看不懂,別人也看不懂,如果在以后出現了問題將會成為項目質量的隱患。因此在引入任何第三方代碼之前,確保你對這個代碼有一個很清晰的了解。

     

    提前宣布自己的工作計劃

    在自己準備開始進行某項功能的修改之前,先給工作小組的成員談談自己的修改計劃,讓大家都能了解你的思想,了解你即將對軟件作出的修改,這樣能盡可能的減少在開發過程中可能出現的沖突,提高開發效率。同時你也能夠在和成員的交流中發現自己之前設計的不足,完善你的設計。

     

    對提交的信息采用明晰的標注

    +) 表示增加了功能

    *) 表示對某些功能進行了更改

    -) 表示刪除了文件,或者對某些功能進行了裁剪,刪除,屏蔽。

    b) 表示修正了具體的某個bug

    posted on 2013-01-18 14:29 楊軍威 閱讀(12307) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: a视频免费在线观看| 日韩中文字幕在线免费观看| 亚洲精品免费在线| 妞干网手机免费视频| 免费很黄无遮挡的视频毛片| 久久久久久久综合日本亚洲| 1区2区3区产品乱码免费| 亚洲日韩国产AV无码无码精品| 亚洲国产精品一区二区三区久久| 精品免费tv久久久久久久| 亚洲国产成人99精品激情在线| www国产亚洲精品久久久日本| 免费观看一区二区三区| 亚洲中文字幕乱码熟女在线| 国产亚洲美日韩AV中文字幕无码成人 | 精品久久洲久久久久护士免费| xxxxx做受大片视频免费| 亚洲国产美女精品久久| 亚洲精品成人区在线观看| 亚洲精品在线免费观看| 日韩久久无码免费毛片软件| 亚洲成人黄色网址| 亚洲中文字幕久久精品无码喷水| 免费可以在线看A∨网站| 国产成年无码久久久免费| 亚洲av永久无码精品秋霞电影秋| 亚洲精品无码不卡| 亚洲色偷偷综合亚洲AV伊人| 91在线视频免费播放| 国产午夜精品免费一区二区三区| 久久久亚洲精华液精华液精华液| 亚洲黄色免费电影| 亚洲午夜久久久久久久久久| 国产精品免费播放| 24小时日本在线www免费的| 一级毛片全部免费播放| 亚洲阿v天堂在线2017免费| 亚洲av成人中文无码专区| 亚洲丝袜中文字幕| 亚洲高清美女一区二区三区| 亚洲乳大丰满中文字幕|