雖然我比較喜歡使用git,可是因爲公司不少的東西都仍是使用的svn,因此仍是會使用比較多的svn來管理東西,下面我就平時對svn的一些使用來作一些總結,利人利己。python
由於平時都是在linux上使用,因此都時命令行的使用方式。linux
svn是「集中式」的版本管理工具,要進行操做時必須同服務器保持鏈接,並且只能有一個服務器,可是相對於git,你能夠值從服務器獲取你所關心的部分目錄下的文件。nginx
因爲有「中心化」的思想,因此svn的版本號是一個遞增的整數,從1開始,每提交一次就會增長1,並且因爲你多是隻獲取了部分文件夾,因此在本地查看日誌的時候不會看到所有版本號的信息。git
svn的「分支」和「標籤」是同樣的,都是一個目錄,名稱不同都是依靠管理來進行區分的。bash
svn的忽略沒有配置文件,須要向服務器進行說明,並且比較麻煩(我尚未使用過)。服務器
svn的檢出使用命令「svn checkout url」進行,若是服務器要求,還須要輸入用戶名和密碼,固然還有一些更多的參數,例如檢出到哪個目錄啊、指定版本啊什麼的,具體的在使用時查看便知道。svn
在成功操做檢出以後即可以獲得所指定的倉庫的最新版本了,在目錄內能夠查看一些信息以及作文件修改了。工具
在工做空間裏面使用命令「svn log」查看當前目錄的全部日誌,也能夠輸入具體的文件名查看指定問jain的日誌效果相似於url
$ svn log ------------------------------------------------------------------------ r1313 | sxq | 2016-07-29 18:34:06 +0800 (Fri, 29 Jul 2016) | 1 line 20160729 ------------------------------------------------------------------------ r1301 | sxq | 2016-07-22 18:07:23 +0800 (Fri, 22 Jul 2016) | 1 line 20160722 ------------------------------------------------------------------------ r1287 | sxq | 2016-07-15 17:50:29 +0800 (Fri, 15 Jul 2016) | 1 line 20160715
這裏的「r1313」中的「1313」就是版本號spa
使用「svn up」同服務器上的數據保持一致,更新數據,若是產生衝突會詢問解決方式,結束後會給出最新的版本號是多少。
$ svn up Updating '.': At revision 1325.
有不少時候都須要查看差別,儘管已經有不少其餘的查看差別的方式,可是使用「svn diff <文件> -r<版本號>:<版本號>」或者將未提交版本同倉庫版本比較的方式仍是一種頗有用的方式
通常在查看兩個版本區別以前都會先查看文件有那一些版本以及版本提交說明(svn log)
$ svn diff 安裝說明-步驟.adoc -r28:20 Index: 安裝說明-步驟.adoc =================================================================== --- 安裝說明-步驟.adoc (revision 28) +++ 安裝說明-步驟.adoc (revision 20) @@ -8,7 +8,7 @@ 先配置安裝源,而後運行下面命令 .......................... -yum install mariadb mariadb-devel mariadb-libs mariadb-server apr apr-util apr-devel apr-util-devel apr-util-openssl openssl openssl-devel psmisc net-tools policycoreutils-python nginx-1.8.1-1.el7.ngx.x86_64.rpm +yum install mariadb mariadb-devel mariadb-libs mariadb-server apr apr-util apr-devel apr-util-devel apr-util-openssl openssl openssl-devel psmisc net-tools nginx-1.8.1-1.el7.ngx.x86_64.rpm ..........................
svn的提交默認只會提交對文件內容的修改,對於文件增刪或者移動位置等等,須要先使用命令進行處理。
提交的時候須要使用命令「svn commit -m "說明" 」,說明是用來在之後查看日誌的時候知道此次提交都作了些什麼,基於管理目的。
對於文件增刪的狀況,使用「svn status」查看的時候,會看到文件的狀態爲?或者!,這個時候使用命令
svn add `svn status |grep ? |awk '{print $2}'` svn delete `svn status |grep ! |awk '{print $2}'`
添加或刪除
分支和標籤本質是同樣的,使用管理手段進行區分,產生到不一樣的目錄便可。
使用命令「svn copy <src> <dest>」進行生成,而後提交,這樣新文件就會保留所具備的日誌。
本文只是說到了不少經常使用的功能,還有不少沒有說到的不經常使用的功能,好比衝突解決、版本回退等。等到後續的使用中去探索。