前言
一、搭建本地svn服务器
1.建立代码库
2.配置文件修改
3.启动本地svn服务
二、搭建过程中常见问题
如果Mac os升级到10.0以上,自带的svn不支持了怎么办
三、mac本地使用svn软件管理svn库
cornerstone3安装
四、使用Cornerstone会存在的问题
Mac打开应用提示已损坏怎么办?
配置svn server注意事项
SVN不能显示日志log
关于svn服务器文件具体存放路径问题
四、如何用其他设备远程连接到这台Mac搭建的本地svn服务器
如何远程连接这台svn服务器
常见报错问题
总结
由于开发工作进行到越来越后面,本地计算机储存了大量的历史版本文件数据,给本地电脑产生了很大的存储压力,同时为了规范本地文件的存放和历史版本管理,因此产生了将办公室闲置的一台mac搭建成svn服务器进行各种资料的版本管理工作。本篇文章将详细的讲述从搭建svn服务到远程登录svn服务进行版本管理的全流程。
Mac是自带svn服务器的,我们需要开启svn的服务器,相应的也是需要建立svn的代码库。(注意:如果你的mac已经升级到Catalina(10.15.*)及以上,那么自带的svn已经不支持使用了,所以针对这种情况,下面章节会详细说明)
//创建一个文件夹,并将文件夹设置为svn的代码库
svnadmin create /Users/Mac/svn/你创建的文件夹
注意:不能在“/用户名/别的文件夹”下面建立“/svn”,否则localhost会识别不出来,在“/用户名下”建立“/svn”,再在“/svn”下建立svn库,就可以识别出来了。
在finder中打开上面的路径,我们可以看到其中生成了一些文件,我们需要配置conf文件夹下的svnserve.conf、passwd、authz三个文件。(注意:可以不需要在终端用命令编辑,直接用文本编辑器打开这三个文件即可)
配置svnserve.conf :
将下图红色框框里面的内容前的#号去掉即可!(注意:其中anon-access = read最好改为anon-access = none;前者表示匿名只读访问,后者表示禁止匿名访问,只有输入了账号密码才可以)
配置 passwd:
用户名aaa,密码123456
配置 authz
1⃣️users = aaa,bbb表示创建了一个用户组,此用户组包含有aaa和bbb两个用户
2⃣️[/]表示授权的目录路径,这里是根目录
3⃣️users = rw表示给users用户组读写的权限,r表示读,w表示写,如果是给单独用户授权表示为:aaa = rw
svnserve -d -r /Users/Mac/svn
注意:路径mac为你自己的电脑用户名
没有报错就是启动成功,可以在监控器中看到该服务进程
问题描述:运行svn指令报错信息如下:
svn: error: The subversion command line tools are no longer provided by Xcode
解决方法:
使用HomeBrew来安装SubVersions
命令行 brew install subversion
结果:
你会发现安装svn有可能会失败,因为软件源的问题,导致安装失败,建议使用国内镜像源即可。
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
运行上述命令之后,选择1 ,5 选项,中科院镜像源。
brew install svn
运行上述命令之后,安装svn完成,查看 svn --version 如果还是报错就用下面的命令修复
sudo chown -R $(whoami) $(brew --prefix)/*
运行上述命令,如果还没有报错,继续执行brew install svn进行安装。关于Homebrew国内如何自动安装,可以看知乎专栏文章。
我们在Windows系统中经常使用的tortoise svn是不支持mac系统的,这里推荐两款mac版本的svn客户端,snail svn和cornerstone3 mac版,这里比较推荐后者,前者精简版才是免费的,但是功能不全面,不过界面是中文,后者功能全面一些,使用更加方便,不过是英文版。
下载链接,密码:lz93
下载完成之后进行安装,如果无法下载或者安装存在问题可以用链接2和链接3下载安装。
打开cornerstone,具体使用方法很简单这里就不讲了,在链接2和链接3中均有详细介绍该软件的使用方法。
我们在使用mac系统安装或下载一些软件应用时,偶尔会出现“XXX软件已损坏”的情况,下面提供解决流程:
1⃣️MacOS 10.15及以上新系统出现应用提示损坏打不开的解决方法:
打开终端(屏幕下方Dock栏中的的小火箭图标“启动台”——“其他”——打开“终端”),在终端中粘贴下面命令: sudo xattr -r -d com.apple.quarantine (* quarantine 后面有个空格)
打开屏幕下方的“访达”—选择左侧边栏的“应用程序”,再找到你需要处理的软件拖拽到命令后面,按回车后输入密码执行,举个例子,比如需要打开sketch应用的命令是:
sudo xattr -r -d com.apple.quarantine /Applications/sketch.app/
2⃣️新的系统为了加强安全机制,默认不允许用户自行下载安装应用程序,只能从Mac App Store里安装应用。那么怎么解决呢?首先, 打开终端(屏幕下方Dock栏中的的小火箭图标“启动台”——“其他”——打开“终端”),然后,输入代码:sudo spctl --master-disable(*master前面为两个短横线)注意红框处是空格。按回车输入自己电脑的密码,按下回车即可。
3⃣️打开系统偏好设置 ,点击安全性与隐私,如果显示任何来源,则流程完成。
4⃣️如果出现类似“打不开“xxxx”,因为它来自身份不明的开发者”的情况,还可以,在“系统偏好设置—安全性与隐私—通用—允许从以下位置下载的应用”选择“仍要打开”,让系统同意应用运行即可。
点击add repository,选择svn server并填写如下图的内容:
Server:本地服务器填写localhost,局域网写ip地址,例如:192.168.12.123
注意:不能在“/用户名/别的文件夹”下面建立“/svn”,否则localhost会识别不出来,在“/用户名下”建立“/svn”,再在“/svn”下建立svn库,就可以识别出来了。
respository path:写“/svn/”后面的内容(注意:是svn后面的目录)
最下面写在passwd中配置过得密码,最后add就好了,
现象:Cornerstone SVN使用起来都正常,就是不能显示log日志,报错“could not contact repository to read the latest log entries”。(如果按照本篇文章从头到尾操作,这里就不会出现这种情况。)
解决:把svnserve.conf里的anon-access = read改成anon-access = none,或者新增anon-access = none,都可以。= read 表示匿名访问的时候是只读的;= none 表示需要账户和密码才能访问。
SVN服务器版本库有两种格式:FSFS和BDB
把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。
如果是FSFS格式,这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差异数据和日志等信息。
目前用的最多的是FSFS方式,这种方式的话,一般是存储在\db\revs文件夹下,里面有一堆以版本号命名的文件,如:0、1、2、3、4......,那个就是了。
svn先把0版本的状态压缩成1个文件,然后每次版本更新时就针对变动的部分做一个压缩文件,每次都是增加一个增量包,最后在服务器上能看到文件名为从0开始到最终版本的一系列文件。
进行到这里,最后我们来讲一下怎么通过其他设备通过svn工具,远程链接到这台Mac svn服务器并且达到资源文件版本管理的工作。
先决条件:Mac和我们使用的其他设备必须在同一个局域网下。如果不在同一个局域网之下,就需要用到其他手段实现外网到内网的穿透,以达到外网也可以访问处于局域网中的这台Mac服务器。(内网穿透工具推荐:小米球和echosite,这部分内容可以看我相关文章或者自行百度)
查看这台Mac svn服务器的局域网IP:ifconfig
其他设备:其他设备上的svn工具配置好IP和路径,输入账号密码就可以连上这台svn服务器啦。
我自己在windows设备上装的svn工具是TortoiseSVN,在正常的配置ip和路径,输入账号密码之后,报错:由于目标机器积极拒绝,无法连接。
这种情况存在两种原因:
1⃣️远程svn服务未启动。我们可以在这台mac设备的活动监视器里面查看svn服务是否还存在。
2⃣️svn仓库路径搞错了。可以在svn下建立很多仓库:
建立test仓库,访问的时候:svn://localhost/test
建立oa,则访问的时候 svn://localhost/oa
这篇文章到这里就结束了,针对利用mac设备搭建svn服务器需要注意的一系列问题应该都列出来了,仅供大家学习参考。