1. 程式人生 > >Linux學習閑談(三) ——SVN用法及切版本與合版本

Linux學習閑談(三) ——SVN用法及切版本與合版本

服務 accept 上線 全局 顯示 cnblogs class 文件合並 刪除一個文件

Linux學習閑談(三)

——SVN用法及切版本與合版本

(轉載請附上本文鏈接——linhxx)

SVN(Subversion)在工程中運用廣泛,多人合作項目、項目版本控制等方面,SVN都是不可或缺的。雖然最近很多項目也在使用Git,但SVN仍是現在流行的版本控制系統。SVN與Git相比,最大的一個優勢是存在全局版本號。

一、概述

SVN分為客戶端和服務端,即需要在一臺大家都能訪問到的服務器上安裝SVN的服務端,然後各自的電腦裏安裝SVN的客戶端。安裝的過程這裏不講,有很多博客如http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html講的不錯。

二、基礎命令

1、獲取代碼

svn checkout svn版本路徑。checkout可以簡寫為co。

該命令用於獲取SVN服務器上某個版本路徑的代碼。

2、更新代碼

svn update [路徑/文件名]。update可以簡寫為up。

該命令用於獲取SVN服務器上某路徑某文件的最新內容,如果不加路徑和文件默認獲取SVN服務器最新版本的所有內容。

3、提交代碼到臨時路徑

1)svn add 文件名。

新添加的文件,需要使用此方法將新的文件提交到臨時路徑下。

2)svn delete 文件名。delete 可以簡寫為del或者rm。

刪除一個文件,需要使用此方法,告訴臨時路徑該文件即將被刪除。

4、提交代碼到SVN服務器

svn ci –m ‘comment’ 文件名。commit可以縮寫為co,-m是用於添加備註的,建議每次commit的時候,都需要提交備註,這樣以後有問題的時候,也便於查找原因。

上述第三點的add和delete命令輸完後,必須使用commit命令提交到服務器,才會生效。另外,平時修改完的文件,也需要commit才會生效。

5、沖突解決

svn resolve

svn up獲取svn ci時,假設發現文件my.php有沖突,會收到如下提示:選擇: (p) 推遲,(df) 顯示全部差異,(e) 編輯,(mc) 我的版本, (tc) 他人的版本,(s) 顯示全部選項。

如果要拋棄自己的編輯,可以選擇tc,如果已經確定別人不需要他們的改動了,可以選擇mc。但是,通常選擇p進行推遲,然後會生成my.php.mine,my.php.r上一版本號,my.php.r本版本號,my.php。可以用vi打開my.php,會發現<<<<<<<、=======、>>>>>>>類似這樣的分割,標記著自己的改動和他人的改動。

修改完成後,刪除<<== >>這些記號和沒用的自動生成的備註後,使用如下命令;svn resolve –accept working my.php,告訴SVN已經解決沖突,並且會自動刪除上述生成的那些文件。然後再用SVN ci進行提交即可。

如果無法確定是否保留對方的修改,則需要叫上改動人員一起查看問題。

6、其他命令

1)svn diff 文件名,diff可以縮寫為di,該命令用於比較當前路徑下的文件與SVN服務器相對應路徑下的文件的差異,可以具體到每一行,會顯示差異的行的內容。如果不輸入文件名,會比較所有的文件。

另外,可以用svn di –r 版本1:版本2 文件名,比較兩個版本之間的差異,默認是比較本地版本與當前SVN服務器版本的差異。

該方法在commit之前,建議使用,如果有沖突也可以提前處理。

2)svn convert 文件名。

該命令可以將某個文件還原成SVN服務器的版本,該操作將使本地的修改丟失,該命令等同於rm 文件名 + svn up 文件名。即把文件刪了再重新獲取。

另外,svn convert –recursive * 可以遞歸還原所有文件。

3)svn mkdir 文件夾名。

該方法會在SVN臨時路徑創建一個文件夾,相當於mkdir 文件夾名 + svn add 文件夾名。

4)svn cat 文件名。

該方法不檢出文件,僅查看服務器上該文件的內容。

5)svn status。status可以簡寫為st或者stat。

該命令用於查看當前路徑下,本地SVN副本和SVN服務器上的差異,返回的結果是一個英文字母+文件名,即本地文件與SVN服務器不一致的文件名。

英文字母:M-修改,U-線上有更新,A-新增,D-刪除,?-本地新增還未添加到SVN臨時路徑,C-沖突。

7、查看日誌

svn log 文件名。該命令會查看文件的所有版本commit的日誌信息:版本、作者、日期、comment。如果不加文件名,則為所有文件的版本信息。

三、分支合並與切版本

1、概述

在大型項目中,版本通常分為tags、trunks、branches三種。

tags表示快照,即當前線上生產系統的版本,通常不在此類型下進行開發,除非緊急上線。

trunks表示當前的主版本,branches是分支版本。通常合作者都在各自的branches上開發,並及時與trunks進行同步,每次開發前也從trunks進行更新。

因此,分支合並通常指trunks合並到tags,切分支通常指trunks復制一份branches。

2、命令

1)合並分支

svn merge 路徑1 路徑2 [合並後的路徑]。默認合並於當前路徑。

該方法會把兩個文件合並。建議使用該命令之前,需要先進行svn up,並把沖突解決以後在指向,否則會合並失敗。

另外,svn merge以後,僅合並到暫存的路徑下,需要svn ci進行提交到SVN服務器才可以。

2)切分支

svn copy 主路徑 復制後的路徑 –m ‘comment’。copy可以簡寫為cp。

該命令將服務器上的文件復制一個工作副本到本地,在服務器並不保存這些文件,只有一個指向該文件的節點。

——written by linhxx

更多最新文章,歡迎關註微信公眾號“決勝機器學習”,或掃描右邊二維碼。技術分享圖片

Linux學習閑談(三) ——SVN用法及切版本與合版本