服务器应用之-svn构建

有人听到svn服务器,感觉很高深的东西,其实慢慢了解如何运作,你就不会特别的困惑,也不会觉得难用.
svn服务器的搭建与客户端的command式的操作,视图软件有时会让你的IDE,down机,或假死,那么command式相对而言好些,你听说过,dos有死机的?
自己一直对command式的也非常好奇,现在test并记录

svn服务器原理

首先咱们不懂,先了解下,svn服务器的原理,对于很多初手或者学习者需要理解配合的深刻含义,这种提高项目效率的同时也是在互相进步

翻他牌

那么我最初是在何时接触svn的呢,那是在2007年的,当时用的还是vs2005的vss2005版本,与几个后端配合提交版本,只不过,我提交的是设计稿及html+css样式+js
这时才发现前后端分离是多么的方便,至少前后配合初型已经是这样子
对于svn服务器理解可以看如下图:

简单的表述,一台server(任何一台电脑,只要硬件可以作为服务器)
那么这边有3台,A,B,C,从server提交又获取,使得这三台,可以在server上获取其他二台提交的一些信息,另外还可以版本比较merge合并,很神奇的东西

系统环境选择svn搭建

首先看一下,自己系统是什么,window还是mac os,

mac os

还好,mac自带svn服务器端,这样我们可省一些安装及配置,打开终端或IDE上terminal,我这边是webstorm

第一步,初始化svn服务器,因为mac自带,已经装好了,就不需要我们再下载

1
$ svnadmin create 自定义svn服务器名称

第二步,找到路径 自定义svn服务器文件夹 > conf > svnserve.conf文件内,去掉前面的#

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

anon-access 表示匿名访问权限
anon-access = none代表禁止匿名访问,需要帐号密码才能访问

第三步,conf >passwd文件,在[users]后面加zyx=123456,表示创建了zyx帐户,密码是123456
如:

1
2
3
4
[users]
# harry = harryssecret
# sally = sallyssecret
xyz=123456

第四步,conf >authz文件

passwd用户xyz加到 => jackgroup创建用户组,

如:

1
jackgroup=xyz

第五步,conf>authz文件 ,组权限设置
rw读写权限,[/]表示根目录

如:

1
@jackgroup=rw

第六步,开启svn服务器

1
$ svnserver -d -r 自定义svn服务器

整个svn服务器已经部署完,那么你可以用小乌龟TortoiseSVN下下看,本地用svn://localhost开头,如果你真的是一台服务器,有固定IP地址,那么可以是svn://192.168.1.2这种,是不是我们以前看到后端给到的svn地址?
哦,原来是这样,好神奇,我们自己电脑也可以作服务器
那我这边用的是versions,mac版的svn下载

开始启后,打开活动监测器,搜索svnserve进程,能搜索的到,说明开启成功

接下来,使用command式客户端

将weibo所有内容,上传到服务器svn仓库weibo目录下,引号中的内容是注释说明

1
$ svn import weibo svn://localhost/svn/weibo --username=xyz --password=123456 -m "初始化导入"

若出现Authorization failed问题:
解决:

  • 在conf>authz文件内,加入[/]代表根目录下所有的资源

从服务器端下载代码到客户端本地

svn checkout svn://localhost/svn/weibo –username=xyz –password=123456 /weibo

签下,到当前目录到 /weibo

用工具Versions也可以,类似,小乌龟视图界面下载

提交更改过的代码到服务器

添加
svn add 文件/文件夹

更改
svn commit -m “修改了main.m文件”

出现问题时:
The log message is a pathname (was -F intended?); use ‘–force-log’ to override
解决方法:

  • svn ci 提交文件 -m “改变新描述”

更新服务器端的代码到客户端

1
$ svn update

其他方法查看

1
$ svn ?

不想用了,就关闭svn服务器

先找pid,这是进程的序号

1
$ ps -e | grep svnserve

关闭pid

1
$ kill pid是数字

若出现No such process,那说明没找到进程序号

或者直接killall svnserve,也可以