1. 程式人生 > 其它 >zt, SVN用法及切版本與合版本

zt, SVN用法及切版本與合版本

https://cloud.tencent.com/developer/article/1053614

SVN用法及切版本與合版本

 

SVN用法及切版本與合版本

(原創內容,轉載請註明來源,謝謝)

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

一、概述

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

二、基礎命令

1、獲取程式碼

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

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

2、更新程式碼

svnupdate [路徑/檔名]。update可以簡寫為up。

該命令用於獲取SVN伺服器上某路徑某檔案的最新內容,如果不加路徑和檔案預設獲取SVN伺服器最新版本的所有內容。

3、提交程式碼到臨時路徑

1)svn add 檔名。

新新增的檔案,需要使用此方法將新的檔案提交到臨時路徑下。

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

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

4、提交程式碼到SVN伺服器

svnci –m ‘comment’ 檔名。commit可以縮寫為co,-m是用於新增備註的,建議每次commit的時候,都需要提交備註,這樣以後有問題的時候,也便於查詢原因。

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

5、衝突解決

svnresolve

svnup獲取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 檔名。即把檔案刪了再重新獲取。

另外,svnconvert –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、檢視日誌

svnlog 檔名。該命令會檢視檔案的所有版本commit的日誌資訊:版本、作者、日期、comment。如果不加檔名,則為所有檔案的版本資訊。

三、分支合併與切版本

1、概述

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

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

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

因此,分支合併通常指trunks合併到tags,切分支通常指trunks複製一份branches。

2、命令

1)合併分支

svnmerge 路徑1 路徑2 [合併後的路徑]。預設合併於當前路徑。

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

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

2)切分支

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

該命令將伺服器上的檔案複製一個工作副本到本地,在伺服器並不儲存這些檔案,只有一個指向該檔案的節點。

——written by linhxx 2017.07.12·