代碼管理平臺SVN

22.1 代碼管理平臺


代碼管理平臺,也能夠稱爲代碼管理工具,顧名思義,就是管理代碼的平臺,代碼能夠是公司開發的網站,或者是開發的項目,咱們須要把這些代碼放到一個平臺上面進行管理。html

說到這可能有人會想,不就是代碼嗎?我把它放在服務器上的某個目錄不就好了嗎?開發完新的項目再把代碼傳上去替換掉舊的代碼不就能夠了嗎?linux

固然,對於網站來講,這樣作是沒什麼問題的。可是,若是代碼天天有不少的地方在更新,當有一天,你想看到最近一段時間代碼變化的地方,你怎麼看?很不方便,並且你和同事都在開發的時候想看到對方開發的內容。而代碼管理平臺就能很容易實現目的。git

代碼管理工具的做用:github

1. 能追蹤一個項目從誕生一直到定案的過程
2. 記錄一個項目的全部內容變化,無限制返回
3. 查看特定版本的修訂狀況

經常使用的代碼管理工具:web

CVS
    開啓版本控制之門
    1990年誕生,「遠古時代」的主流源代碼管理工具
SVN
    全稱是Subversion,C/S架構,集中式版本控制之王者
    是CVS的接班人,速度比CVS快,功能比CVS多且強大
    在國內軟件企業中使用最爲廣泛(70%-90%)
GIT
    一款偉大的分佈式源代碼管理工具
    目前被愈來愈多的開源項目使用
    SVN正在被GIT慢慢取代

GIT與SVN的不一樣在於GIT是分佈式的,GIT不須要依賴服務端就能夠工做,而SVN是集中式的,因此不行。vim

分佈式與集中式比較服務器

另外,github是基於git的在線web頁面代碼託管平臺,能夠選擇付費服務。而gitlab能夠認爲是一個開源的github,二者沒有直接關係。架構


22.2 SVN


SVN使用(Linux)

由於是C/S架構,因此須要安裝服務端和客戶端。app

準備兩臺機器,一臺做爲服務端,IP:192.168.100.150,一臺做爲客戶端,IP:192.168.100.160。tcp


服務端操做

  • 安裝svn:
# yum install -y subversion

  • 建立版本庫:
# mkdir -p /data/svnroot/myproject# svnadmin create /data/svnroot/myproject				#初始化文件# ls /data/svnroot/myproject/conf  db  format  hooks  locks  README.txt# ls  /data/svnroot/myproject/conf/authz  passwd  svnserve.conf          

# vim /data/svnroot/myproject/conf/authz				#authz是權限控制文件,添加下面內容lzxs = lzx,user1				#定義lzxs組,組下面有兩個用戶lzx、user1[/]				#這裏的 / 指的是/data/svnroot/myproject/目錄@lzxs = rw				#@指定組,rw可讀可寫* = r				#*指全部也能夠下面這樣寫,在項目不少的時候可使用下面方式[myproject:/]user1 = rw

# vim /data/svnroot/myproject/conf/passwd				#passwd是帳號密碼文件;在[users]添加如下內容lzx = lzx_!(123
user1 = user1_^^^				#左邊是用戶,右邊是密碼# vim /data/svnroot/myproject/conf/svnserve.conf				#svnserve是服務配置文件;在[general]下面添加如下內容anon-access = none				#指匿名用戶,無任何權限auth-access = write				#指被受權用戶,可寫權限password-db = passwd				#指定用戶密碼存放的目錄是passwd(相對路徑)authz-db = authz				#指定權限控制目錄存放的目錄是authz(相對路徑)realm = /data/svnroot/myproject				#指定項目,對之生效(這裏是絕對路徑)

  • 啓動服務:
# svnserve -d -r /data/svnroot/				#-d表示以daemon形式,後臺啓動;-r 指定svn所在路徑# ps aux |grep svnserveroot       1330  0.0  0.0 162240   652 ?        Ss   09:26   0:00 svnserve -d -r /data/svnroot/# netstat -lntp |grep svnservetcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      1330/svnserve             //監聽3690端口

  • 檢出代碼:
# cd /home/# svn checkout svn://192.168.100.150/myproject --username=user1#		svn checkout 檢出代碼,後面指定服務器地址和項目坐在目錄,指定用戶名Authentication realm: <svn://192.168.100.150:3690> /data/svnroot/myproject
Password for 'user1':				#輸入以前定義的user1的密碼-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:   <svn://192.168.100.150:3690> /data/svnroot/myproject

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, ifpossible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in'/root/.subversion/servers'.-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes				#提示是否保存未加密的密碼,輸入yesChecked out revision 0.				#取出版本爲0# lsadmin  myproject				#出現myproject的新目錄# ls -la myproject/total 0
drwxr-xr-x  3 root root 18 Aug 30 09:53 .drwxr-xr-x. 4 root root 36 Aug 30 09:53 ..drwxr-xr-x  4 root root 75 Aug 30 09:53 .svn


客戶端操做

  • 安裝svn:
# yum install -y subversion

  • 檢出代碼:
# cd /home/# svn checkout svn://192.168.100.150/myproject --username=user1#		svn checkout 檢出代碼,後面指定服務器地址和項目坐在目錄,指定用戶名Authentication realm: <svn://192.168.100.150:3690> /data/svnroot/myproject
Password for 'user1':				#輸入以前服務端定義的user1的密碼-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:   <svn://192.168.100.150:3690> /data/svnroot/myproject

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, ifpossible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in'/root/.subversion/servers'.-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes				#提示是否保存未加密的密碼,輸入yesChecked out revision 0.				#取出版本爲0# lsadmin  myproject				#出現myproject/目錄# ls -la myproject/total 0
drwxr-xr-x 3 root root 18 Aug 29 08:43 .drwxr-xr-x 3 root root 23 Aug 29 08:43 ..drwxr-xr-x 4 root root 75 Aug 29 08:43 .svn

  • 傳輸文件到服務端:
# cd myproject/# cp /etc/fstab .# lsfstab# svn add ./fstab				#先增長add,打上標記,存到版本庫裏A         fstab# svn commit -m "add fstab"				#再傳到服務端上Adding         fstab
Transmitting file data .Committed revision 1.


服務端操做

  • 再到服務端查看:
# cd myproject/# svn up#		svn update 升級版本庫(同步),這裏不須要輸入密碼是由於以前checkout的時候就已經保存密碼到/root/.subversion/serversUpdating '.':A    fstab           
Updated to revision 1.# lsfstab				#出現fstab這個文件

上面整個過程,能夠理解爲,一臺客戶端代碼作了修改,傳到服務端,這是另一臺客戶端及時升級版本庫,就可以將作修改的代碼同步到本身客戶端上。

  • 刪除文件:
# svn delete fstab				#本地刪除D         fstab# svn commit -m "delete fstab"				#服務端刪除Deleting       fstab

Committed revision 2.


客戶端操做

  • 客戶端查看:
# svn up				#升級版本庫Updating '.':D    fstab
Updated to revision 2.# ls				#已經沒有fstab了

  • 查看變動日誌:
# svn log				#從下到上,上面爲最新變化------------------------------------------------------------------------
r2 | user1 | 2018-08-30 10:09:04 -0400 (Thu, 30 Aug 2018) | 1 line

delete fstab
------------------------------------------------------------------------
r1 | user1 | 2018-08-30 09:58:05 -0400 (Thu, 30 Aug 2018) | 1 line

add fstab
------------------------------------------------------------------------


SVN使用(Windows)

在Windows下,也可使用SVN。

Windows下有一個很好的svn軟件:TortoiseSVN,官網 , 最新版本是1.10.1。


下載安裝

在官網下載下來安裝,根據本身系統位數選擇。

這裏寫圖片描述

若是你喜歡用命令行操做,請務必記得勾選command line client toolwill be install on local hard driver,不用命令行的能夠跳過這一步。

這裏寫圖片描述

而後一路Next便可安裝。安裝完畢後,在任意地方右鍵查看快捷菜單。發現TortoiseSVN即表示安裝成功。

這裏寫圖片描述

若是勾選了安裝命令行工具,那麼輸入命令SVN,有以下提示也表示安裝成功。

這裏寫圖片描述

可是此時菜單全是英文的,若是你不習慣英文,能夠去下載語言包,注意系統位數。

這裏寫圖片描述

安裝完語言包以後,能夠右鍵進入setting設置。

這裏寫圖片描述

選擇你喜歡的語言(好比中文),而後肯定,不出意外,如今的語言已經切換到中文了。

這裏寫圖片描述

安裝步驟到此結束。


使用SVN

在電腦上隨便建立一個目錄,而後右鍵點擊 SVN 檢出

這裏寫圖片描述

而後輸入linux上的IP地址和目錄

這裏寫圖片描述

點擊肯定,輸入以前服務器上定義的用戶名和密碼

這裏寫圖片描述

而後點擊肯定便可。打開myproject目錄,發現有變化

這裏寫圖片描述

新建一個123.txt文件,並隨便寫點內容

這裏寫圖片描述

如今把123.txt傳到服務端上,先add(加入到版本庫)

這裏寫圖片描述

而後點擊SVN 提交,說明是必需要寫的

這裏寫圖片描述

點擊肯定便可

這裏寫圖片描述

再回到linux機器上,能夠認爲是另一臺客戶端,升級版本庫:

# svn upUpdating '.':A    123.txt.txt
Updated to revision 2.# ls123.txt.txt  fstab				#能夠看到,剛剛在Windows上建立的123.txt在這能夠看到# cat 123.txt.txt 111
222
333333

再在linux機器上建立一個文件:

# vim 111.sh				#隨便寫點內容niwqfdhweiuofhweiu        

# svn add 111.shA         111.sh# svn commit -m "add 111.sh"Adding         111.sh
Transmitting file data .Committed revision 3.

回到Windows上,點擊SVN 更新

這裏寫圖片描述
這裏寫圖片描述

點擊肯定便可,再查看myproject文件夾

這裏寫圖片描述

能夠看到多出了111.sh文件

這就是SVN在Windows上的簡單使用,和linux上沒有很大差異,SVN自己用起來也比較簡單。


更多資料參考:

TortoiseSVN新人使用指南

相關文章
相關標籤/搜索