部署—USVN版本控制系統(tǒng)

部署—USVN版本控制系統(tǒng)
2019.10.26

1. SVN介紹

SVN——Apache Subversion(集中式的版本控制系統(tǒng))

Git與SVN比較:

SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版本控制器!這是兩者之間最核心的區(qū)別。
  SVN只有一個單一的集中管理的服務(wù)器,保存所有文件的修訂版本,而協(xié)同工作的人們都通過客戶端連到這臺服務(wù)器,取出最新的文件或者提交更新。
 Git每一個終端都是一個倉庫,客戶端并不只提取最新版本的文件快照,而是把原始的代碼倉庫完整地鏡像下來。每一次的提取操作,實際上都是一次對代碼倉庫的完整備份。

1、集中式版本控制系統(tǒng):


  版本庫是集中存放在中央服務(wù)器的,而干活的時候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務(wù)器。中央服務(wù)器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然后回到家自己改,改完了,再放回圖書館。

集中式版本控制系統(tǒng)最大的毛病就是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)內(nèi)還好,帶寬夠大,速度夠快,可如果在互聯(lián)網(wǎng)上,遇到網(wǎng)速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。

2、分布式版本控制系統(tǒng):

首先,分布式版本控制系統(tǒng)根本沒有“中央服務(wù)器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯(lián)網(wǎng)了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協(xié)作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

和集中式版本控制系統(tǒng)相比,分布式版本控制系統(tǒng)的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復(fù)制一個就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問題,所有人都沒法干活了。

在實際使用分布式版本控制系統(tǒng)的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個局域網(wǎng)內(nèi),兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分布式版本控制系統(tǒng)通常也有一臺充當“中央服務(wù)器”的電腦,但這個服務(wù)器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。

3、簡單比較如下:

Git與SVN的區(qū)別
svn和git的區(qū)別,為什么使用git?

Git優(yōu)點:(一臺電腦即可以是客戶端,也可以是服務(wù)器;工作過程中,可以斷網(wǎng))
適合分布式開發(fā),強調(diào)個體;
公共服務(wù)器壓力和數(shù)據(jù)量都不會太大;
速度快,靈活;
可以離線工作。

SVN優(yōu)點:(一臺的服務(wù)器控制很多客戶端,使用過程中不能斷網(wǎng))
管理方便、邏輯明確;
集中式管理更能保證安全性;
適合開發(fā)人數(shù)不多的項目開發(fā)。

Subversion

  • 每個版本庫有唯一的URL(官方地址),每個用戶都從這個地址獲取代碼和數(shù)據(jù);
  • 獲取代碼的更新,也只能連接到這個唯一的版本庫,同步以取得最新數(shù)據(jù);
  • 提交必須有網(wǎng)絡(luò)連接(非本地版本庫);
  • 提交需要授權(quán),如果沒有寫權(quán)限,提交會失?。?/li>
  • 提交并非每次都能夠成功。如果有其他人先于你提交,會提示“改動基于過時的版本,先更新再提交”… 諸如此類;
  • 沖突解決是一個提交速度的競賽:手快者,先提交,平安無事;手慢者,后提交,可能遇到麻煩的沖突解決。

好處:每個人都可以一定程度上看到項目中的其他人正在做些什么。而管理員也可以輕松掌控每個開發(fā)者的權(quán)限。

缺點:中央服務(wù)器的單點故障。

USVN

  • 這是一個用PHP編寫的Web界面,用于配置Subversion存儲庫。其目標是消除使用命令行界面創(chuàng)建新的SVN項目和用戶的麻煩。

環(huán)境

[root@usvn www]#  uname -a
Linux usvn 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

關(guān)閉selinux:

#執(zhí)行命令
setsebool -P httpd_can_network_connect=1

#修改為disabled
vim /etc/selinux/config
SELINUX=disabled

2.安裝部署

2.1 下載依賴包

yum install subversion httpd mod_dav_svn php php-mysql mysql-server mysql-devel perl-DBI perl-DBD-mysql mod_auth_mysql
php-5.4
php-mysql-5.4
httpd-2.4.6
subversion-1.7
mod_dav_svn-1.7 
perl-DBI-1.627

2.2 啟動httpd、mysqld服務(wù)

systemctl restart httpd mysqld
systemctl enable httpd mysqld

2.3 設(shè)置MySQL密碼(usvn需要)

mysqladmin -u root password 123

2.4 配置svn

#將usvn軟件包下載到指定目錄并解壓
cd /server/tools
wget https://github.com/usvn/usvn/archive/1.0.8.zip
unzip 1.0.8.zip

#移動到/var/www/html/下
mv usvn-1.0.8 /var/www/html/usvn

#將代碼移動到apache的站點下
mv /var/www/html/usvn/src /var/www/html/
    
#修改為apache的權(quán)限
chown -R apache.apache /var/www/html/src/

    
#修改Apache配置文件
vim /etc/httpd/conf/httpd.conf
119 DocumentRoot "/var/www/html/src/public"

#追加配置
cat >> etc/httpd/conf/httpd.conf << EOF
<Directory "/var/www/html/src/">
        Options +SymLinksIfOwnerMatch 
        AllowOverride all
        Order allow,deny
        Allow from all
</Directory>
EOF

#重啟httpd
systemctl restart httpd

2.5 瀏覽器進行訪問





2.6 mysql創(chuàng)建usvn庫表信息

MySQL-5.7.26-安裝流程

systemctl restart mysqld.service
create database usvn;
grant all on usvn.* to 'usvn'@'172.16.1.%' identified by '123';
grant all on usvn.* to 'usvn'@'localhost' identified by '123';
flush privileges;


2.7 添加配置到httpd.conf中

<Location /svn/>
    ErrorDocument 404 default
    DAV svn
    Require valid-user
    SVNParentPath /var/www/html/src/files/svn
    SVNListParentPath off
    AuthType Basic
    AuthName "USVN"
    AuthUserFile /var/www/html/src/files/htpasswd
    AuthzSVNAccessFile /var/www/html/src/files/authz
</Location>
    
#重啟apache
systemctl restart httpd

2.8 默認目錄說明


2.9 代碼上傳目錄

[root@usvn html]# ll /var/www/html/src/files/
total 8
-rw-r--r--. 1 apache apache 424 Oct 25 20:27 authz
-rw-r--r--. 1 apache apache 134 Oct 25 20:17 htpasswd
drwxr-xr-x. 3 apache apache  22 Oct 25 20:20 svn

2.9 svn賬戶密碼配置目錄

[root@usvn src]# ll /var/www/html/src/files/svn/DE_Robot/conf/
total 12
-rwx------. 1 apache apache 1080 Oct 25 20:20 authz
-rwx------. 1 apache apache  309 Oct 25 20:20 passwd
-rwx------. 1 apache apache 3090 Oct 25 20:20 svnserve.conf

#創(chuàng)建svn倉庫目錄
mkdir -p /var/www/html/src/files/svn/DE_Robot/

#初始化
svnadmin create /var/www/html/src/files/svn/DE_Robot/
    
#查看目錄
ls /var/www/html/src/files/svn/DE_Robot/
conf  db  format  hooks  locks  README.txt

#切入到conf目錄中修改用戶密碼
cd /var/www/html/src/files/svn/DE_Robot/conf/
ls
authz  passwd  svnserve.conf

#修改主配置文件svnserve.conf ,將‘#’刪除
[root@usvn conf]# egrep -v '#|^$' svnserve.conf
[general]
anon-access = none   #匿名用戶權(quán)限(無)
auth-access = write  #認證用戶(寫)
password-db = passwd #數(shù)據(jù)庫賬號密碼文件認證
authz-db = authz     #角色的定義(每個用戶能讀哪個文件)
realm = /var/www/html/src/files/svn/DE_Robot #倉庫的根目錄地址
[sasl]
配置段的含義
#添加用戶
[root@usvn conf]# vim passwd
[users]
admin = 12345678    
test = 12345678

#添加授權(quán)文件([/]代表svn的根目錄)
[root@usvn conf]# vim authz 
[/]
admin = rw
test = r

#對svn目錄下的所有文件和子目錄添加Users的讀寫權(quán)限
[root@usvn html]# chmod -R o+rw /var/www/html/src/files/svn/

#啟動svn服務(wù)
[root@usvn conf]# svnserve -d -r /var/www/html/src/files/svn/DE_Robot/
[root@usvn conf]# netstat -lntup|grep svnserve
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      17734/svnserve 

3. 安裝SVN客戶端訪問存儲庫

默認安裝

選中命令行那個,然后勾選“will be installed on local hard drive”

3.1 安裝完畢后點擊鼠標右鍵即可看到

3.2 安裝中文語言包

3.3 創(chuàng)建一個SVN的倉庫目錄并連接服務(wù)端

3.4 修改語言為中文

3.5 上傳代碼并測試

需要輸入密碼

admin
passwd

3.5 查看代碼是否上傳成功

[root@usvn DE_Robot]# pwd
/var/www/html/src/files/svn/DE_Robot
[root@usvn DE_Robot]# du -smh db
540K    db
#再次查看服務(wù)端的容量大小
[root@usvn DE_Robot]# du -smh db
674M    db

3.6 svn的注意情況

  • 每次提交之前必須要先更新
  • 如果拉不下來,給本地文件修改名字后再拉

4 從USVN上進行查看與下載

負責(zé)為開發(fā)創(chuàng)建賬號密碼,然后進行局域網(wǎng)內(nèi)的集中式的代碼版本控制

技術(shù)支持文檔:

https://yq.aliyun.com/articles/518938?spm=a2c4e.11153940.0.0.61ea62dag84tMh

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容