Linux學習閑談(三) ——SVN用法及切版本與合版本
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用法及切版本與合版本