您好,登錄后才能下訂單哦!
場景介紹:最近朋友公司想搭建一套版本控制軟件,讓我推薦下,我跟他說SVN或者GIT都可以,最后他選擇使用SVN作為版本控制,我簡單的跟他寫了個文檔跟他介紹下:
一、SVN是什么?
1、subversion
2、SVN是一個版本管理工具
3、所有數據都集中在檔案庫里,類似于FTP工具
4、管理任意一個元素(文件),任何時刻的變化,ftp只是一個上傳下載的工具(SVN會備份并記錄每個文件每一次的修改更新變動)
常用的版本管理工具:vss,cvs,svn,git
二、svn與git的簡單區別:
1、svn是一個集中式的版本管理,git是一個分布式版本控制
2、svn要做版本管理的話,必須要提交到服務器上,而git,就算服務器斷開的話,還可以在本地做版本控制
3、GIT把內容按元數據方式存儲,而SVN是按文件
4、GIT沒有一個全局的版本號,而SVN有
5、GIT的內容完整性要優于SVN
參考資料:http://www.oschina.net/news/12542/git-and-svn
三、運維人員應該掌握哪些版本管理:
對于版本管理系統,運維人員需要掌握的技術點:
1、安裝、部署、維護、排障
2、簡單實用,很多公司都是開發來管理,包括建立新倉庫和添加刪除賬號
3、對于版本控制系統,運維人員相當于開發商,開發人員是業主,運維搭建的系統為開發人員服務
四、SVN服務運行模式與訪問模式
1、獨立服務器訪問
訪問地址如:svn://svn.test.com/os
2、借助apache等http服務
訪問地址如:http://svn.test.com/os
a)單獨安裝apache+svn(不要用)
b)CSVN(apache+svn)是一個單獨的整合的軟件,帶web界面管理的SVN軟件
3、本地直接訪問
file:///application/svndata/os
推薦svn以及csvn web管理方式
五、SVN 的工作原理:
采取客戶端/服務器模式——在服務器的版本庫中保存項目文件的各個版本, 所有參與協同開發的程序員在自己本地電腦上保存一個工作副本。
SVN 支持程序員將本地副本更新到服務器端的最新版本,也支持將本地副本的最新改變更新到服務器端, 而且后面的更新不會覆蓋前面的更新,而是作為一個新的版本被保存下來——SVN甚至支持將本地工作副本恢復為服務器端保存的某一個歷史版本。
六、SVN基本操作:
1、檢出(checkout):將一個服務器端創建好的項目整個下載到本地,這是到項目組后參與開發的第一步,只需執行一次。
2、更新(update):將本地文件更新為服務器端的最新版本,通常為每天上班時或修改公共文件之前執行一次。
3、提交(commit):將本地修改提交到服務器端。通常每天下班前或每實現一個功能、完成一個模塊時執行一次。
七、SVN的安裝與配置:
[root@LVS-DR01 ~]# yum -y install subversion [root@LVS-DR01 ~]# rpm -qa subversion subversion-1.7.14-10.el7.x86_64 [root@LVS-DR01 ~]# svnserve --version svnserve, version 1.7.14 (r1542130) compiled Nov 20 2015, 19:25:09 Copyright (C) 2013 The Apache Software Foundation. This software consists of contributions made by many people; see the NOTICE file for more information. Subversion is open source software, see http://subversion.apache.org/ The following repository back-end (FS) modules are available: * fs_base : Module for working with a Berkeley DB repository. * fs_fs : Module for working with a plain file (FSFS) repository. Cyrus SASL authentication is available. 創建svn數據目錄,默認的svn目錄是/var/svn,需要我們手動創建: [root@LVS-DR01 ~]# mkdir -p /var/svn 使用svnadmin初始化倉庫: [root@LVS-DR01 ~]# svnadmin create /var/svn [root@LVS-DR01 ~]# tree /var/svn /var/svn ├── conf │?? ├── authz │?? ├── passwd │?? └── svnserve.conf ├── db │?? ├── current │?? ├── format │?? ├── fsfs.conf │?? ├── fs-type │?? ├── min-unpacked-rev │?? ├── revprops │?? │?? └── 0 │?? │?? └── 0 │?? ├── revs │?? │?? └── 0 │?? │?? └── 0 │?? ├── transactions │?? ├── txn-current │?? ├── txn-current-lock │?? ├── txn-protorevs │?? ├── uuid │?? └── write-lock ├── format ├── hooks │?? ├── post-commit.tmpl │?? ├── post-lock.tmpl │?? ├── post-revprop-change.tmpl │?? ├── post-unlock.tmpl │?? ├── pre-commit.tmpl │?? ├── pre-lock.tmpl │?? ├── pre-revprop-change.tmpl │?? ├── pre-unlock.tmpl │?? └── start-commit.tmpl ├── locks │?? ├── db.lock │?? └── db-logs.lock └── README.txt 10 directories, 27 files [root@LVS-DR01 ~]# cd /var/svn/conf/ [root@LVS-DR01 conf]# ll total 12 -rw-r--r-- 1 root root 1080 Jun 14 14:59 authz -rw-r--r-- 1 root root 309 Jun 14 14:59 passwd -rw-r--r-- 1 root root 3090 Jun 14 14:59 svnserve.conf [root@LVS-DR01 conf]# cp svnserve.conf svnserve.conf.bak
八、開啟SVN服務:
[root@LVS-DR01 ~]# systemctl start svnserve.service [root@LVS-DR01 ~]# systemctl status svnserve.service [root@LVS-DR01 ~]# systemctl enable svnserve.service Created symlink from /etc/systemd/system/multi-user.target.wants/svnserve.service to /usr/lib/systemd/system/svnserve.service. SVN默認開啟3690端口,檢查下: [root@LVS-DR01 ~]# lsof -i :3690 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME svnserve 60317 root 3u IPv4 286761 0t0 TCP *:svn (LISTEN) [root@LVS-DR01 ~]# netstat -antp | grep svn tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 60317/svnserve
九、修改SVN默認位置
在CentOS7下使用yum直接安裝SVN,修改SVN默認項目的位置 [root@LVS-DR01 svn]# mkdir -p /dawnpro/svn [root@LVS-DR01 conf]# vim /etc/sysconfig/svnserve # OPTIONS is used to pass command-line arguments to svnserve. # # Specify the repository location in -r parameter: OPTIONS="-r /dawnpro/svn" #OPTIONS="-r /var/svn" 說明:將/var/svn目錄調整為/dawnpro/svn [root@LVS-DR01 conf]# systemctl restart svnserve
十、創建svn版本庫目錄
[root@LVS-DR01 svn]# cd /dawnpro/svn/ [root@LVS-DR01 svn]# mkdir -p EIP EMS SAP [root@LVS-DR01 svn]# svnadmin create EIP [root@LVS-DR01 svn]# svnadmin create EMS [root@LVS-DR01 svn]# svnadmin create SAP [root@LVS-DR01 svn]# ll total 0 drwxr-xr-x 6 root root 86 Jun 16 21:56 EIP drwxr-xr-x 6 root root 86 Jun 16 21:56 EMS drwxr-xr-x 6 root root 86 Jun 16 21:57 SAP
十一、新建個目錄統一管理用戶權限
[root@LVS-DR01 ~]# mkdir -p /dawnpro/svn/conf/ [root@LVS-DR01 ~]# cp /dawnpro/svn/EIP/conf/* /dawnpro/svn/conf/ [root@LVS-DR01 ~]# cd /dawnpro/svn/conf/ [root@LVS-DR01 conf]# ls authz passwd
十二、修改權限管理文件
[root@LVS-DR01 conf]# egrep -v "^#|^$" authz [groups] EIP = EIP01,EIP02 EMS = EMS02,EMS02 SAP = SAP01,SAP02 [/] * = [EIP:/] @EIP = rw * = [EMS:/] @EMS = rw * = [SAP:/] @SAP = rw * = 說明: a) * = 以上沒有定義的用戶都沒有任何權限 b) @EIP = rw代表EIP組具有rw權限 [root@LVS-DR01 conf]# egrep -v "^#|^$" passwd [users] admin = admin EMS01 = EMS01 EMS02 = EMS02 EIP01 = EIP01 EIP02 = EIP02 SAP01 = SAP01 SAP02 = SAP02 [root@LVS-DR01 ~]# egrep -v "^#|^$" /dawnpro/svn/EIP/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = /dawnpro/svn/conf/passwd authz-db = /dawnpro/svn/conf/authz realm = EIP [root@LVS-DR01 ~]# egrep -v "^#|^$" /dawnpro/svn/EMS/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = /dawnpro/svn/conf/passwd authz-db = /dawnpro/svn/conf/authz realm = EMS [root@LVS-DR01 ~]# egrep -v "^#|^$" /dawnpro/svn/SAP/conf/svnserve.conf [general] anon-access = none auth-access = write password-db = /dawnpro/svn/conf/passwd authz-db = /dawnpro/svn/conf/authz realm = SAP
十三、測試下權限配置的結果
a)使用SVN客戶端訪問SVN服務器
b)使用EIP01賬號訪問svn://10.10.10.101/EIP
c)測試上傳"04-git誕生記.png",上傳成功(過程太短,我就沒截圖)
d)換個賬號進行測試(使用EMS01賬號進行測試)
e)提示沒有權限(測試成功)
說明,SVN服務修改完配置文件,不需要重啟SVN服務就可以直接生效。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。