centos7.x搭建svn server

简介

Subversion(SVN) 是一个开源的版本控制系統,也就是说 Subversion 管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。


SVN 的一些概念

repository(源代码库):源代码统一存放的地方

Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份

Commit(提交):当你已经修改了代码,你就需要Commit到repository

Update (更新):当你已经Checkout了一份源代码,Update一下你就可以和Repository 上的源代码同步,你手上的代码就会有最新的变更

日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) —>作出自己的修改并调试成功 —> Commit(大家就可以看到你的修改了) 。

如果两个程序员同时修改了同一个文件呢,SVN可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。

如果是同一行,SVN会提示文件Confict,冲突,需要手动确认。


subversion目录说明:

db目录:就是所有版本控制的数据存放文件。

hooks目录:放置hook脚本文件的目录。

locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端。

format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。

conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)。

进入conf目录(该svn版本库配置文件)cd conf/

authz 文件是权限控制文件

passwd 是帐号密码文件

svnserve.conf SVN服务配置文件

#添加svn账号,并且禁止登陆
useradd-M-s/sbin/nologinsvn
[root@localhost~]#yuminstallsubversion-y
Loadedplugins:fastestmirror
base|3.6kB00:00
extras|3.4kB00:00
updates|3.4kB00:00
Loadingmirrorspeedsfromcachedhostfile
*base:mirrors.163.com
*extras:mirrors.163.com
*updates:mirrors.163.com
ResolvingDependencies
-->Runningtransactioncheck
--->Packagesubversion.x86_640:1.7.14-10.el7willbeinstalled
-->ProcessingDependency:subversion-libs(x86-64)=1.7.14-10.el7forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_wc-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_subr-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_repos-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_ra_svn-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_ra_neon-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_ra_local-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_ra-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_fs_util-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_fs_fs-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_fs_base-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_fs-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_diff-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_delta-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libsvn_client-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libneon.so.27()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libaprutil-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->ProcessingDependency:libapr-1.so.0()(64bit)forpackage:subversion-1.7.14-10.el7.x86_64
-->Runningtransactioncheck
--->Packageapr.x86_640:1.4.8-3.el7willbeinstalled
--->Packageapr-util.x86_640:1.5.2-6.el7willbeinstalled
--->Packageneon.x86_640:0.30.0-3.el7willbeinstalled
-->ProcessingDependency:libpakchois.so.0()(64bit)forpackage:neon-0.30.0-3.el7.x86_64
--->Packagesubversion-libs.x86_640:1.7.14-10.el7willbeinstalled
-->Runningtransactioncheck
--->Packagepakchois.x86_640:0.4-10.el7willbeinstalled
-->FinishedDependencyResolution

DependenciesResolved

================================================================================
PackageArchVersionRepositorySize
================================================================================
Installing:
subversionx86_641.7.14-10.el7base1.0M
Installingfordependencies:
aprx86_641.4.8-3.el7base103k
apr-utilx86_641.5.2-6.el7base92k
neonx86_640.30.0-3.el7base165k
pakchoisx86_640.4-10.el7base14k
subversion-libsx86_641.7.14-10.el7base921k

TransactionSummary
================================================================================
Install1Package(+5Dependentpackages)

Totaldownloadsize:2.3M
Installedsize:8.1M
Downloadingpackages:
(1/6):apr-util-1.5.2-6.el7.x86_64.rpm|92kB00:00
(2/6):neon-0.30.0-3.el7.x86_64.rpm|165kB00:00
(3/6):pakchois-0.4-10.el7.x86_64.rpm|14kB00:00
(4/6):subversion-1.7.14-10.el7.x86_64.rpm|1.0MB00:00
(5/6):subversion-libs-1.7.14-10.el7.x86_64.rpm|921kB00:00
(6/6):apr-1.4.8-3.el7.x86_64.rpm|103kB00:01
--------------------------------------------------------------------------------
Total1.8MB/s|2.3MB00:01
Runningtransactioncheck
Runningtransactiontest
Transactiontestsucceeded
Runningtransaction
Installing:apr-1.4.8-3.el7.x86_641/6
Installing:apr-util-1.5.2-6.el7.x86_642/6
Installing:pakchois-0.4-10.el7.x86_643/6
Installing:neon-0.30.0-3.el7.x86_644/6
Installing:subversion-libs-1.7.14-10.el7.x86_645/6
Installing:subversion-1.7.14-10.el7.x86_646/6
Verifying:neon-0.30.0-3.el7.x86_641/6
Verifying:apr-1.4.8-3.el7.x86_642/6
Verifying:subversion-1.7.14-10.el7.x86_643/6
Verifying:apr-util-1.5.2-6.el7.x86_644/6
Verifying:pakchois-0.4-10.el7.x86_645/6
Verifying:subversion-libs-1.7.14-10.el7.x86_646/6

Installed:
subversion.x86_640:1.7.14-10.el7

DependencyInstalled:
apr.x86_640:1.4.8-3.el7apr-util.x86_640:1.5.2-6.el7
neon.x86_640:0.30.0-3.el7pakchois.x86_640:0.4-10.el7
subversion-libs.x86_640:1.7.14-10.el7

Complete!

[root@localhost~]#svnserve-h
usage:svnserve[-d|-i|-t|-X][options]

Validoptions:
-d[--daemon]:daemonmode
-i[--inetd]:inetdmode
-t[--tunnel]:tunnelmode
-X[--listen-once]:listen-oncemode(usefulfordebugging)
-r[--root]ARG:rootofdirectorytoserve
-R[--read-only]:forcereadonly,overridingrepositoryconfigfile
--config-fileARG:readconfigurationfromfileARG
--listen-portARG:listenport
[mode:daemon,listen-once]
--listen-hostARG:listenhostnameorIPaddress
[mode:daemon,listen-once]
-6[--prefer-ipv6]:preferIPv6whenresolvingthelistenhostname
[IPv4ispreferredbydefault.UsingIPv4andIPv6
atthesametimeisnotsupportedindaemonmode.
Useinetdmodeortunnelmodeifyouneedthis.]
-c[--compression]ARG:compressionleveltousefornetworktransmissions
[0..nocompression,5..default,9..maximumcompression]
-M[--memory-cache-size]ARG:sizeoftheextrain-memorycacheinMBusedto
minimizeredundantoperations.
Defaultis128forthreadedand16fornon-
threadedmode.
[usedforFSFSrepositoriesonly]
--cache-txdeltasARG:enableordisablecachingofdeltasbetweenolder
revisions.
Defaultisno.
[usedforFSFSrepositoriesonly]
--cache-fulltextsARG:enableordisablecachingoffilecontents
Defaultisyes.
[usedforFSFSrepositoriesonly]
-T[--threads]:usethreadsinsteadoffork[mode:daemon]
--foreground:runinforeground(usefulfordebugging)
[mode:daemon]
--log-fileARG:svnservelogfile
--pid-fileARG:writeserverprocessIDtofileARG
[mode:daemon,listen-once]
--tunnel-userARG:tunnelusername(defaultiscurrentuid'sname)
[mode:tunnel]
-h[--help]:displaythishelp
--version:showprogramversioninformation
-q[--quiet]:noprogress(onlyerrors)tostderr

[root@localhost~]#svnserve--version
svnserve,version1.7.14(r1542130)
compiledNov202015,19:25:09

Copyright(C)2013TheApacheSoftwareFoundation.
Thissoftwareconsistsofcontributionsmadebymanypeople;seetheNOTICE
fileformoreinformation.
Subversionisopensourcesoftware,seehttp://subversion.apache.org/

Thefollowingrepositoryback-end(FS)modulesareavailable:

*fs_base:ModuleforworkingwithaBerkeleyDBrepository.
*fs_fs:Moduleforworkingwithaplainfile(FSFS)repository.

CyrusSASLauthenticationisavailable.

[root@localhost~]#whichsvn
/usr/bin/svn
[root@localhost~]#mkdir/var/svn
[root@localhost~]#cd/var/svn/
#创建版本库
[root@localhostsvn]#svnadmincreate/var/svn/svnrepos
[root@localhostsvn]#
[root@localhostsvn]#ls
svnrepos
[root@localhostsvn]#cdsvnrepos/
[root@localhostsvnrepos]#ls
confdbformathookslocksREADME.txt
[root@localhostsvnrepos]#catREADME.txt
ThisisaSubversionrepository;usethe'svnadmin'tooltoexamine
it.Donotadd,delete,ormodifyfileshereunlessyouknowhow
toavoidcorruptingtherepository.

Visithttp://subversion.apache.org/formoreinformation.
[root@localhostsvnrepos]#cdconf/
[root@localhostconf]#ls
authzpasswdsvnserve.conf
[root@localhostconf]#vimpasswd
###Thisfileisanexamplepasswordfileforsvnserve.
###Itsformatissimilartothatofsvnserve.conf.Asshowninthe
###examplebelowitcontainsonesectionlabelled[users].
###Thenameandpasswordforeachuserfollow,oneaccountperline.

[users]
#harry=harryssecret
#sally=sallyssecret

#添加admin用户
admin=123456
[root@localhostconf]#vimauthz
###Thisfileisanexampleauthorizationfileforsvnserve.
###Itsformatisidenticaltothatofmod_authz_svnauthorization
###files.
###Asshownbeloweachsectiondefinesauthorizationsforthepathand
###(optional)repositoryspecifiedbythesectionname.
###Theauthorizationsfollow.Anauthorizationlinecanreferto:
###-asingleuser,###-agroupofusersdefinedinaspecial[groups]section,###-analiasdefinedinaspecial[aliases]section,###-allauthenticatedusers,usingthe'$authenticated'token,###-onlyanonymoususers,usingthe'$anonymous'token,###-anyone,usingthe'*'wildcard.
###
###Amatchcanbeinvertedbyprefixingtherulewith'~'.Rulescan
###grantread('r')access,read-write('rw')access,ornoaccess
###('').

[aliases]
#joe=/C=XZ/ST=Dessert/L=SnakeCity/O=SnakeOil,Ltd./OU=ResearchInstitute/CN=JoeAverage

[groups]
#harry_and_sally=harry,sally
#harry_sally_and_joe=harry,sally,&joe

#[/foo/bar]
#harry=rw
#&joe=r
#*=

#[repository:/baz/fuz]
#@harry_and_sally=rw
#*=r
#
#添加新建的用户admin,并授予rw权限
[/]
admin=rw

[root@localhostconf]#catsvnserve.conf
###Thisfilecontrolstheconfigurationofthesvnservedaemon,ifyou
###useittoallowaccesstothisrepository.(Ifyouonlyallow
###accessthroughhttp:and/orfile:URLs,thenthisfileis
###irrelevant.)

###Visithttp://subversion.apache.org/formoreinformation.

[general]
###Theanon-accessandauth-accessoptionscontrolaccesstothe
###repositoryforunauthenticated(a.k.a.anonymous)usersand
###authenticatedusers,respectively.
###Validvaluesare"write","read",and"none".
###Settingthevalueto"none"prohibitsbothreadingandwriting;
###"read"allowsread-onlyaccess,and"write"allowscomplete
###read/writeaccesstotherepository.
###Thesamplesettingsbelowarethedefaultsandspecifythatanonymous
###usershaveread-onlyaccesstotherepository,whileauthenticated
###usershavereadandwriteaccesstotherepository.
#匿名用户可读
#anon-access=read
anon-access=none
#auth-access=write
###Thepassword-dboptioncontrolsthelocationofthepassword
###databasefile.Unlessyouspecifyapathstartingwitha/,###thefile'slocationisrelativetothedirectorycontaining
###thisconfigurationfile.
###IfSASLisenabled(seebelow),thisfilewillNOTbeused.
###Uncommentthelinebelowtousethedefaultpasswordfile.
#使用哪个文件作为账号文件
password-db=passwd
###Theauthz-dboptioncontrolsthelocationoftheauthorization
###rulesforpath-basedaccesscontrol.Unlessyouspecifyapath
###startingwitha/,thefile'slocationisrelativetothethe
###directorycontainingthisfile.Ifyoudon'tspecifyan
###authz-db,nopath-basedaccesscontrolisdone.
###Uncommentthelinebelowtousethedefaultauthorizationfile.
#使用哪个文件作为权限文件
authz-db=authz
###Thisoptionspecifiestheauthenticationrealmoftherepository.
###Iftworepositorieshavethesameauthenticationrealm,theyshould
###havethesamepassworddatabase,andviceversa.Thedefaultrealm
###isrepository'suuid.
#认证空间名,版本库所在目录
realm=/var/svn/svnrepos
###Theforce-username-caseoptioncausessvnservetocase-normalize
###usernamesbeforecomparingthemagainsttheauthorizationrulesinthe
###authz-dbfileconfiguredabove.Validvaluesare"upper"(toupper-
###casetheusernames),"lower"(tolowercasetheusernames),and
###"none"(tocompareusernamesas-iswithoutcaseconversion,which
###isthedefaultbehavior).
#force-username-case=none

[sasl]
###ThisoptionspecifieswhetheryouwanttousetheCyrusSASL
###libraryforauthentication.Defaultisfalse.
###ThissectionwillbeignoredifsvnserveisnotbuiltwithCyrus
###SASLsupport;tocheck,run'svnserve--version'andlookforaline
###reading'CyrusSASLauthenticationisavailable.'
#use-sasl=true
###Theseoptionsspecifythedesiredstrengthofthesecuritylayer
###thatyouwantSASLtoprovide.0meansnoencryption,1means
###integrity-checkingonly,valueslargerthan1arecorrelated
###totheeffectivekeylengthforencryption(e.g.128means128-bit
###encryption).Thevaluesbelowarethedefaults.
#min-encryption=0
#max-encryption=256

#启动svn
[root@localhostconf]#svnserve-d-r/var/svn/svnrepos/
[root@localhostconf]#ps-ef|grepsvn
root91141016:06?00:00:00svnserve-d-r/var/svn/svnrepos/
root91168214016:06pts/000:00:00grep--color=autosvn
[root@localhostconf]#netstat-ntlp
ActiveInternetconnections(onlyservers)
ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname
tcp000.0.0.0:36900.0.0.0:*LISTEN9114/svnserve
tcp000.0.0.0:220.0.0.0:*LISTEN1049/sshd
tcp00127.0.0.1:250.0.0.0:*LISTEN1282/master
tcp600:::3306:::*LISTEN26795/mysqld
tcp600:::8080:::*LISTEN4538/java
tcp600:::22:::*LISTEN1049/sshd
tcp600::1:25:::*LISTEN1282/master
[root@localhostconf]#cd..
[root@localhostsvnrepos]#ls
confdbformathookslocksREADME.txt
[root@localhostsvnrepos]#tree
.
├──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

10directories,27files

#停止SVN命令
killallsvnserve
#svn开机启动
cat/lib/systemd/system/svnserve.service
[Unit]
Description=Subversionprotocoldaemon
After=syslog.targetnetwork.target

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
ExecStart=/usr/bin/svnserve--daemon--pid-file=/run/svnserve/svnserve.pid$OPTIONS

[Install]
WantedBy=multi-user.target
#找到svn的service环境配置文件/etc/sysconfig/svnserve编辑配置文件
#将OPTIONS="-r/var/svn"改为svn版本库存放的目录
cat/etc/sysconfig/svnserve
#OPTIONSisusedtopasscommand-lineargumentstosvnserve.
#
#Specifytherepositorylocationin-rparameter:
OPTIONS="-r/var/svn/svnrepos"
#设置开机启动
systemctlenablesvnserve.service
systemctlstartsvnserve.service
systemctlrestartsvnserve.service

#ps-aux|grep'svn'


--------------------------------------------------------

客户端连接

windowstortoisesvn 下载

https://tortoisesvn.net/downloads.html




参考:https://yq.aliyun.com/articles/83737

相关文章

文章浏览阅读903次。4.清除缓存目录(/var/cache/yum)下的软件...
文章浏览阅读1.5k次。Python 是一种高级解释性编程语言,已被...
文章浏览阅读2.6k次。打开终端或控制台,以root或具有sudo权...
文章浏览阅读744次,点赞24次,收藏26次。目标:通过AppSrv为...
文章浏览阅读1.1w次,点赞8次,收藏26次。chmod命令来自于英...
文章浏览阅读1.2k次。yum源的URL地址,本例中是文件系统的路...