一、Subversion基本操做
是一個自由/開源的版本控制系統(SVN)
多人協做文檔並跟蹤所作的修改
1.1基本概念:
版本庫:是版本控制的核心;任意數量客戶端;客戶端經過寫數據庫分享代碼
Subversion特色:記錄每一次改變
1.2版本模型
版本控制系統的核心任務是協做編輯和數據共享nginx
1.3搭建subversion服務
[root@Web1 ~]# yum -y install subversion #裝包
[root@Web1 ~]# mkdir /var/svn
[root@Web1 ~]# svnadmin create /var/svn/project #建立共享目錄
[root@Web1 ~]# ls /var/svn/project
conf db format hooks locks README.txt
[root@Web1 system]# cd /usr/lib/systemd/system
#導入數據(實驗以此路徑做爲數據導入)
[root@Web1 system]# svn import . file:///var/svn/project/ -m "First Code"
#-m 「註釋」
[root@Web1 ~]# svn list file:///var/svn/project #查看共享目錄內的內容
[root@Web1 ~]# cd /var/svn/project/ #這樣是看不到的
1.4修改配置文件
[root@Web1 ~]# vim /var/svn/project/conf/svnserve.conf
19 anon-access = none #匿名無任何權限
20 auth-access = write #輸入密碼的帳戶(有效帳戶)可讀寫
27 password-db = passwd #密碼文件
34 authz-db = authz #ACL訪問控制列表文件
[root@Web1 ~]# vim /var/svn/project/conf/passwd #用戶名,密碼文件
[root@Web1 ~]# vim /var/svn/project/conf/authz #針對每一個文件作權限
[/] #定義ACL訪問控制 = rw #全部人能夠對共享目錄rw
[/test] #對/test定義 tom = rw #tom 可rw harry = r #harry可r
[/abc] = #全部人不能夠
對於本案例:[/] tom = rw harry = rw
1.5啓動服務(2種方法)
[root@web1 ~]# svnserve -d -r /var/svn/project/ #指定一個目錄共享出去 -d放後臺
[root@web1 ~]# systemctl start svnserve #全部目錄都共享出去
1.6客戶端測試
[root@web2 ~]# cd /tmp
[root@web2 tmp]# svn co --username tom --password 123456 svn://192.168.2.100/
code #co : checkout(檢查下載) 用戶名 密碼 從哪下載 存的目錄(自動建立本地副本)
[root@web2 code]# vim user.slice #在目錄code下隨便修改一個文件
[root@web2 code]# svn ci -m "code2" #改完以後上傳 ci (comit)
此時服務器端所保存的文件有2個版本
1.7其餘命令
[root@web2 code]#svn update #更新數據
[root@web2 ~]# svn info svn://192.168.2.100 #查看版本倉庫信息
[root@web2 ~]# svn log svn://192.168.2.100 #查看版本修改歷史
add命令
寫兩個腳本test.sh test1.sh
[root@web2 ~]# cd /tmp/code #須要在本地副本內操做
[root@web2 code]#svn add +文件名 #本地版本庫添加新文件
當前位置必須是下載文件的位置操做,新加的文件也須要放在該目錄下
[root@web2 code]# svn list svn://192.168.2.100 | grep test #添加的test.sh並無找到
[root@web2 code]# svn ci -m "add test"
[root@web2 code]# svn list svn://192.168.2.100 | grep test
test.sh
test1.sh
mkdir命令
[root@web2 ~]#svn mkdir +目錄
[root@web2 code]# svn mkdir test
[root@Web2 code]# cd test
[root@web2 test]# echo "add test file" > abc.txt
[root@Web2 test]# svn add abc.txt
[root@web2 test]# svn ci -m "mkdir and add file"
del命令
[root@web2 ~]#svn del +文件
#不會自動提交到版本庫,本地已刪除,服務器上還存在,須要svn ci -m
[root@web2 code]# svn ci -m "del test.sh" #真正在庫內刪除
list命令
[root@web2 ~]#svn list svn://192.168.2.100 #文件列表
[root@web2 ~]#svn mv/cp/rm
[root@web2 code]#svn diff #本地副本庫和服務器中文件對比web
兩種修改副本狀況
一、本地修改,未提交
[root@web2 code]# vim zram.service #本地刪除裏面數據
[root@web2 code]# svn revert zram.service #數據恢復
已恢復「zram.service」
revert 本地副本修改後,但未ci提交,能夠數據恢復
二、本地修改,提交
[root@web2 code]# svn merge -r7:5 zram.service #將7版本還原爲5版本
[root@web2 tmp]# svn -r1 co svn://192.168.2.100 code2
取出第一個版本放在code2中數據庫
1.8多人協同:
環境:在不一樣客戶端不一樣用戶登陸的操做
一、修改不一樣文件
[root@Web1 code]# svn update
[root@Web2 code]# svn update
#兩臺保持相同內容
Web1修改一個文件,並上傳 版本更新+1
Web2修改另外一個文件,上傳,版本更新+2
此時web1修改的web2沒有修改,web2修改的web1沒有修改
分別svn update 兩邊版本相同,相對原來+2
二、修改相同文件的不一樣內容
Web1修改一個文件,並上傳 版本更新+1
Web2修改同一個文件,上傳,提示過時,svn update 版本更新+1(修改的地方沒有被覆蓋!!),並上傳 版本更新+1 (共+2)
Web1 svn update 版本更新+1
三、修改相同文件的相同內容(衝突,認爲解決)
Web1修改一個文件,並上傳 版本更新+1
Web2修改同一個文件,上傳,提示過時,svn update,提示:在 「/tmp/code/user.slice」中發現衝突。
選擇: (p) 推遲,(df) 顯示所有差別,(e) 編輯,
(mc) 個人版本, (tc) 他人的版本,
(s) 顯示所有選項:
選p後會在目錄下多出好幾個版本,刪除不要的,而後再上傳vim
[root@Web1 code]# svnadmin dump /var/svn/project/ > my.bak #全部版本都進行了備份
[root@Web1 code]# svnadmin load /var/svn/project2/ < my.bak #還原服務器
二、RPM包
1).rpm 是壓縮包(源碼安裝後的目錄)
2).rpm包含一些描述信息
2.1實現步驟:
1)安裝rpm-build軟件包
[root@web1 ~]# yum -y install rpm-build
2)生成rpmbuild目錄結構
[root@web1 ~]# rpmbuild -ba xx.spec #生成rpmbuild目錄以及子目錄
[root@web1 ~]# ls rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
SOURCES:存放源碼包的目錄
SPECS:配置文件(基本信息,源碼安裝)
BUILDROOT:假根(對於rpmbuild這個軟件,裝包裝在這個根下,不影響真實根)
RPMS:成品的位置,RPM包
3)準備工做,將源碼軟件複製到SOURCES目錄
以nginx的源碼包爲例:
[root@web1 ~]# cp lnmp_soft/nginx-1.8.0.tar.gz /root/rpmbuild/SOURCES/
4)建立並修改SPEC配置文件
[root@web1 ~]# vim rpmbuild/SPECS/nginx.spec
填寫軟件信息
License:GPL #此軟件定義爲開源
%prep #源碼包解包,並cd進去
%setup -q ide
%build #配置編譯
%configure #模塊化配置,可替換爲./configure --with-http_ssl_module
make %{?_smp_mflags}模塊化
%files
%doc
/usr/local/nginx/* #將該路徑下全部打包
5)安裝依賴關係以及打包
[root@Web1 ~]# yum -y install gcc pcre-devel zlib-devel
openssl-devel(http_ssl_module)須要裝這個
[root@web01 ~]# cd rpmbuild/
[root@web01 rpmbuild]# rpmbuild -ba SPECS/nginx.spec
[root@web01 ~]# ls rpmbuild/RPMS/x86_64/
nginx-1.8.0-40.x86_64.rpm nginx-debuginfo-1.8.0-40.x86_64.rpm
6)可使用自定義yum倉庫安裝svn