SVN初學者使用說明

來源:互聯網
上載者:User

工作過程中要學習SVN,所以今天專門的搜了資料,寫在這裡也是讓自己以後回過頭可以看看。

SVN簡介:

 為什麼要使用SVN。

      程式員在編寫程式的過程中,每個程式員都會產生很多不同的版本,這就需要程式員有效管理代碼,在需要的時候可以迅速,準確取出相應的版本。

Subversion是什麼。

   它是一個自由/開源的版本控制系統,一組檔案存放在中心版本庫,記錄每一次檔案和目錄的修改,Subversion允許把資料恢複到早期版本,或是檢查資料修改的曆史,Subversion可以通過網路訪問它的版本庫,從而使使用者在不同的電腦上進行操作。

一:SVN伺服器搭建和使用。

   1.     首先來下載和搭建SVN伺服器,下載地址如下: http://subversion.apache.org/packages.html,進入網址後,滾動到瀏覽器最底部看到如下截圖:

  

      個人認為最好用VisualSVN server 服務端和 TortoiseSVN用戶端搭配使用. 點開上面的VisualSVN串連,下載VisualSVN server,下載完成後雙擊安裝,如下圖:

 

點擊Next下一步,如下:

然後再點擊Next項,下一步,如下:

 

點擊【Next】 如下:

 

Location是指VisualSVN Server的安裝目錄,Repositorys是指定你的版本庫目錄.Server Port指定一個連接埠,Use secure connection勾山表示使用安全連線,

點擊Next,進入下一步,如下圖:

再點擊【Install】,進入如下安裝圖:

等待安裝完成後,點擊【next】,進入下一步:如下圖

點擊【Finish】即可完成安裝。安裝完成後,啟動VisualSVN Server Manager,如圖:

可以在視窗的右邊看到版本庫的一些資訊,比如狀態,日誌,使用者認證,版本庫等.

要建立版本庫,需要按右鍵左邊視窗的Repositores,如下圖:

在彈出的右鍵菜單中選擇Create New Repository或者建立->Repository:

進入下一步,如下圖:

點擊【下一步】,如下圖:

點擊【create】,如下圖:

點擊【Finish】即可完成基本建立。

  2. 需要建立使用者和組,並且需要分配許可權

  1. 在VisualSVN Server Manager視窗的左側按右鍵使用者組,選擇Create User或者建立->User,如圖:

  

點擊User後,進入如下圖:

填寫Username和password後,點擊ok按鈕後,進入如下圖:

點擊上面的【Add】按鈕後,如下圖

增加longen0707到使用者中(如果有多個使用者,操作一樣)。

  2 .   然後我們建立使用者組,在VisualSVN Server Manager視窗的左側按右鍵使用者組,選擇Create Group或者建立->Group,如圖:

  

點擊【Group】按鈕後,進入如下圖:

在快顯視窗中填寫Group name為Developers,然後點Add按鈕,在彈出的視窗中選擇Developer,加入到這個組,然後點Ok.

接下來我們需要給使用者組設定許可權,在MyRepository上單擊右鍵,選擇屬性,如圖:

在彈出的對話方塊中,選擇Security選項卡,點擊Add按鈕,選中longen0707,然後添加進來,使用權限設定為Read/Write,如下圖:

點擊【確定】按鈕即可。

二:用戶端SVN安裝。

 1.首先我們需要下載 ”svn小烏龜”後,進行安裝。比如我下載如下的:

 

   安裝完成後,比如在我的項目在qiandaun1中,我右鍵就可以看到如下:

  

說明snv已經安裝成功了。

2:checkout專案檔。

    建立或者進入目錄下(比如qianduan1),右鍵 --> Svn Checkout -->

其中URL我可以在SVN伺服器擷取到,我在myRepositories下右鍵建立檔案

 

qianduan檔案被建立,然後比如我這樣右鍵 --> copy下

即可。

將複製的版本庫URL粘貼上,如下圖:

點擊【ok】按鈕後,就可以檢索出來,如下:

如下圖:

 

注意事項:

   .svn這個隱藏目錄記錄著兩項關鍵資訊:工作檔案的基準版本和一個本機複本最後更新的時間戳記,千萬不要手動修改或者刪除這個.svn隱藏目錄和裡面的檔案!!,否則將會導致你本地的工作拷貝(靜態試圖)被破壞,無法再進行操作。

  1)    TortoiseSVN表徵圖介紹

    

   一個新檢出的工作複本使用綠色的對勾重載,表示Subversion狀態正常。

    

  在你開始編輯一個檔案之後,狀態就變成了已修改,而表徵圖重載已變成了紅色驚嘆號。通過這種方式,你可以很容易地看出那些檔案從你上次更新工作複本被修改過,且需要提交。

     如果在提交的過程中出現了衝突,表徵圖就會變成了黃色驚嘆號。

    

加號告訴你有一個檔案或者目錄已經被計劃加入到版本控制中。

2)     TortoiseSVN Client基礎操作:

    1. SVN檢出(SVN Checkout)

     在檔案夾或者目錄下單擊右鍵 –> 選擇SVN檢出,如下圖所示

     

  點擊後,在彈開視窗的版本庫url框中輸入版本庫的目錄位址,然後點擊確定,如下圖

 

再點擊ok按鈕後,如下圖:

在彈出的對話方塊中輸入使用者名稱和密碼,驗證成功後,專案檔開始從遠程伺服器下載到本地工作目錄中。

點擊ok按鈕後,即可擷取完成,如下圖所示:

 2.  增加(Add)

  在test專案檔下,建立一個b.txt檔案,提交到版本庫的方法如下2種:

   1. 先提到變更列表中,再commit到配置庫中,選擇新增檔案,右鍵SVN菜單執行“Add“操作提交到”變更列表中”,然後右鍵SVN菜單執行”SVN Commit”提交到版本庫中。

   2. 不提交到變更列表中,而是直接commit配置庫中,選擇該檔案,右鍵svn菜單執行”SVN Commit”操作。

  3.  刪除(Delete)

     如果被刪除的檔案還未入版本庫,則可以直接使用作業系統的刪除操作刪除該檔案。

     如果被刪除的檔案已入版本庫,則刪除的方法如下: 選擇被刪除檔案,右鍵svn菜單執行”delete”操作,然後選擇被刪除檔案的父目錄,右鍵svn菜單執行”SVN Commit”.

使用作業系統的刪除操作刪除該檔案,然後選擇被刪除檔案的父目錄,右鍵svn菜單執行”SVN Commit”,在變更列表中選擇被刪除的檔案。如下圖:

   

 4.  改名(Rename)

    修改檔案名稱,選中需要重新命名的檔案或檔案夾,然後右鍵“TortoiseSVNàRename“,在彈出的對話方塊中輸入新名稱,點擊”ok”按鈕,並將修改檔案名稱後的檔案或檔案夾通過 “SVN Commit”提交到SVN伺服器上。

 5.  SVN還原(SVN Revert)

    右擊想要回退的檔案或者檔案夾,在TortoiseSVN快顯功能表中選擇”Update to reversion…” 然後會彈出一個視窗,如下:

  

比如說我們要回退到第10個版本只需要在Revision中填寫相應的版本號碼,然後點擊ok即可。

 6.  檢查更新(Check for modifications)

     此功能可以顯示你所做的修改有哪些還沒有提交的,此功能不光能看到對檔案的修改變化,所有的變化都能看到,包括增加檔案或者目錄,刪除檔案或者目錄,移動檔案或者目錄等,如果你點擊了檢查版本庫,那你還可以看到版本庫裡的改動,既別人提交了哪些檔案的改動,你還沒更新到本地,如下:

  

 7.  SVN更新(SVN Update)

    更新本地代碼與SVN伺服器上最新的版本一致,只要在需要更新的檔案夾上點擊右鍵或者在檔案下空白處點擊右鍵,選擇”SVN Update” (擷取指定版本中的內容,點擊右鍵執行SVN菜單中的“Update to reversion“),就可以了。

 7.1 如何解決衝突檔案

     對於每個衝突的檔案Subversion在你的目錄下放置了三個檔案:如下:

   

     為什麼會產生衝突代碼呢。原因很簡單就是因為不同的人,同時修改了同一個檔案的同一個地方,這時候,他提交了,我沒有提交,我就提交不了,這個時候我們要進行先更新,然後在進行提交即可,那如果產生衝突,會產生如上3個檔案。 

解決方案如下

      首先我們可以看下1.txt代碼如下:

        <<<<<<< .mine

        aaaasdf11222333 dderderder

        =======

       b>>>>>>> .r5

      然後我去掉多餘的代碼,1.txt變成這樣

      aaaasdf11222333 dderderder

      進行提交,還是提交不了,如下所示:

    

  為什麼。因為衝突會產生上面的三個檔案,有上面3個檔案存在肯定提交不了,這三個檔案代碼及解釋如下: 1.txt.mine 是衝突前自己的檔案。可以看下內容如下:

      aaaasdf11222333 dderderder

      2.  1.txt.r4 是衝突前本地的版本檔案

     內容如下:aaaasdf11222333

      3.  1.txt.r5  是別人趕在你之前提交的版本

      內容如下: b

其中,<<<<<<<<.mine .....=======之間的代碼是你自己的,而======......>>>>>>>.r5是別人與你衝突的代碼部分

這樣就不難理解為什麼會產生衝突這種奇怪的東西了,因為你們修改的同一塊代碼,當然會產生衝突。

解決方案如下: 假如我現在的1.txt中的衝突內容如下:

      <<<<<<< .mine

       6666666666666600000

       =======

      66666666666aaaaaaaaaa666

      >>>>>>> .r16
    前面說過  <<<<<<< .mine …… =======

    ……之間的代碼是我未產生衝突之前修改的代碼,

    ======= ………>>>>>>> .r16 這中間……的代碼是別人與我衝突代碼的部分,從上面的代碼可以看到 aaaaaaaaa是我同事新增的 ,00000是我後增加的。 使用revert(復原)操作,該動作表示使用者放棄自己的更新代碼,然後直接提交,這個時候你的代碼就會使伺服器上最新的代碼,即A使用者提交的新代碼,你的代碼不會被提交,如下所示:

點擊ok按鈕後 可以看到其他三個檔案都自動刪掉了,1.txt代碼變成如下代碼:

66666666666aaaaaaaaaa666

也就是a使用者提交的代碼,我自己更新的代碼需要自己動手複製進去即可提交commit。 假如我現在3.txt產生衝突代碼如下:

<<<<<<< .mine

333333338888888888888=======

3333cccccccccc3333>>>>>>> .r16

通過第一點我們知道,333333338888888888888這個內容是我修改後,未產生衝突之前的內容,3333cccccccccc3333這個代碼是A使用者提交的代碼,從上面得知 A使用者新增內容是ccccccc,而我新增的內容是8888888。

那麼第二種解決方案如下:

                    選擇檔案->右鍵Editconficts:這種方法需要衝突雙方經過協商之後將代碼更改統一之後再提交。不僅解決了衝突而且還保證了代碼是正確的,因為只有一方的代碼被提交.

     

   如上圖所示,紅色的部分是衝突代碼:theirs表示當前伺服器端最新的代碼,Mine表示自己修改後的代碼,Merged表示合并後的代碼。點擊紅色後右鍵選擇:use this text block就可以將該部分代碼作為合并後的代碼

接下來再說說由於衝突導致重要代碼被覆蓋的情況。衝突發生時如果採取的措施不對可能會導致部分代碼丟失,如果想要還原之前的代碼也很容易。

選擇檔案->右鍵選擇show log在這裡面你可以看見之前提交的所有版本,找到你想要恢複的版本右鍵選擇revert to this version 就可以恢複了.

SVN提交(SVN Commit)

    Svn的提交是將在工作空間做的修改進行提交,包括檔案內容的修改,檔案或目錄的添加,刪除,命名,移動等操作。如下圖所示:

   

  8.   顯示日誌(Show log)

       通過此功能可以查到誰,什麼時候,對那個目錄下的那些檔案進行了那些操作,如下圖:

  

 9.  版本庫瀏覽(Repo-browser)

     此功能是用來瀏覽需要查看的資料庫,在本地檔案夾下點擊右鍵,選擇TortoiseSVNàRepo-browser,在彈出的對話方塊中輸入資料庫地址,再輸入使用者名稱和密碼,就能查看到你需要查看到版本庫的內容,在這你還能看到那些檔案被誰鎖定了,如下圖:

   

三: 建立分支合并相互操作

   項目中為何要建立分支,及合并。

      比如我現在項目所有的檔案放在主幹上(trunk)中,由於需求的變更,需要增加新的需求,但是我們主幹上還要繼續往下開發,在此我們可以建立一個分支,來做增加新的需求那一塊,主幹上繼續開發,等分支上代碼沒有問題的時候,再合并到主幹上來。

建立分支的最大的目的就是跟主線進行並行開發時候不影響主線的開發。

   如何操作。

      假如我本地建立一個檔案夾test下有2個檔案夾trunk(存放主幹上的代碼)和branch(存放分支上的代碼),如下所示:

  

一:先提取主幹上的代碼。

   點擊trunk --> 滑鼠右鍵 --> 點擊SVN Checkout --> 彈出一個對話方塊,如下圖所示:

  

其中上面的URL是從伺服器VisualSVN Server上擷取的,如下所示:

 

  直接右鍵qianduan3 --> Copy URL to Clipboard 即可。

  其中qianduan3項目有如下檔案,如下圖所示:

最後點擊上面的checkout按鈕後,就可以在主幹上把代碼從遠程伺服器上擷取到,如下所示:

 

二:建立分支

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.