大纲:
1.什么是svn服务器
2.svn安装
3.svn配置
4.配置svn的服务器目录和自动同步
5.设置svn的开机自启
6.windows下本地安装svn
7.svn的基本使用
1.什么是svn服务器
SVN是Subversion的简称,是一个开放源代码的版本控制系统,用于多个人共同开发同一个项目,共用资源的目的。vn服务器有2种运行方式:独立服务器和借助apache运行,本文是独立服务器的运行方式。
SVN的经典工作方式:
开始新一天的工作:
从服务器下载项目组最新代码。
进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。
下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。
这就是经典的svn工作流程,从流程上看,有不少缺点,但也有优点。
SVN的几个概念:
check out检出获得文件后,检出的文件仍处于SVN版本控制中,与版本库保持关联,比如你可以进行Svn Update或者Svn Commit操作。同时导出文件夹下有一个.svn的隐藏文件夹,存储着一些版本的元数据信息。(对于导入到服务器中的数据,需要检出才能形成一个受svn控制的工作拷贝,才可以进行 add update commit 等操作)
export 简单导出一个版本的数据(把服务器中的数据导出来,相当于复制一份),导出的文件脱离SVN版本控制(导出的就是一个文件,与svn版本没关系),导出后也无法进行Update和Commit操作。导出文件夹下没有.svn目录
import仅仅是把文件导入到svn服务器中,而这个文件本身还只是一个普通的文件,与svn版本库没有关系
add是把新创建的文件添加到缓存区(执行后显示一个加号),需commit提交才能真正上传到服务器(显示对号)
update是把服务器上最新的版本更新下来,比如别人上传的版本(一般提交之前需先更新,否则别人上传的新版本你没有更新下来就会被覆盖,别人上传的就丢失了)
2.svn安装
环境:centos
更新yum库
yum update
yum方式安装svn
yum install subversion -y 安装svn
安装完成后,建立svn服务器的文件夹。
mkdir /var/svn
在svn文件夹下,建立svn库的文件夹,并创建库
cd /var/svn
mkdir web
svnadmin create /var/svn/web
查看库文件夹cd /var/svn/web,ls,会发现已经生成了一些配置文件
3.svn配置
进入conf文件夹,有以下几个配置文件:
配置用户和密码
vim passwd
在[users]块中添加用户和密码,格式:帐号=密码,如 myname=123
配置权限
vim authz
[groups]
group1 = liuxianan
group2 = test1,test2
[/] #目录
@group1 = rw #用户组的配置
@group2 = r
* = #其他用户无权限
test1=rw #对单一用户的权限配置
配置svnserve.conf
vim svnserve.conf 删除下面的5个注释
anon-access =read #匿名用户可读
auth-access =write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm =/var/svn/web # 认证空间名,版本库所在目录
启动SVN服务
svnserve -d -r /var/svn
ps:关闭svn服务指令:killall svnserve,可通过ps -ef | grep svn来查看svn服务是否运行。
4.配置svn的服务器目录和自动同步
创建网站/服务的目录:(svn的代码要实现线上线下同步,必须先通过svn进行提交,提交后的代码才能同步,因此先把代码下载到本地,通过提交后,会自动更新到线上的目录,这里要创建的是线上同步目录)
cd /web #你的网站/服务的上层目录
svn co svn://localhost/web #localhost的根目录是你启动svn时指定的目录(即/var/svn),库文件夹是该目录下web目录ls #可以发现已经生成了web目录,web目录下有一个隐藏的.svn目录,作为svn同步的标识
#通过post-commit钩子脚本实现自动同步
cd /var/svn/web/hook
cp post-commit.tmpl post-commit
编辑post-commit钩子脚本 vim post-commit 修改里面的如下内容
export LANG=zh_CN.UTF-8
SVN=/usr/bin/svn #这个是安装好的时候查看成功与否看到的那个目录(等号两边不能有空格)
WEB=/home/myweb #这个就是你每次完成提交svn自动提交到的那个目录(等号两边不能有空格)
$SVN update $WEB --username myname( 你刚才设置的用户名 ) --password 123( 你刚才设置的密码) --no-auth-cache
给svn文件夹755权限
chmod 755 -Rf /var/svn/
测试
./post-commit #测试是否可同步,打印出版本0,则成功。
5.设置svn的开机自启
查看 systemd 里 svn 的配置文件:
vim /lib/systemd/system/svnserve.service
找到svnserve的配置文件地址:EnvironmentFile=/etc/sysconfig/svnserve #无需执行
编辑vim /etc/sysconfig/svnserve
将 OPTIONS="-r /var/svn" 改为 svn 版本库存放的目录,即/var/svn,:wq 保存退出
设置开机自启动:systemctl enable svnserve.service
重启reboot,测试是否自启动:ps -aux | grep svn
6.windows下本地安装svn
进入TortoiseSVN官网下载安装TortoiseSVN,并下载中文语言包。
正常安装即可。
发现以下选项即SVN安装成功:
选择setting,设置语言:
7.svn的基本使用
鼠标右键,点击SVN检出,出现以下界面:
以上标红的位置填:svn://IP/web,IP是你的服务器IP,web是你的仓库名(若启动服务时设置的目录是web仓库目录,则这里无需加/web后缀)
输入账号的密码,检出成功。
进入目录,创建几个文件,右键目录点击更新,然后点击提交,可将文件提交到服务器。这时,你的服务器刚才设计的网站目录也会自动同步这些文件。
完。
欢迎访问作者网站:https://pmhuiyilu.com