1、基础知识
Mac自带了svn服务器端和客户端功能,我们只需要简单配置一下即可使用。
svn上的文件不是以原来的格式存储的,而是以FSFS(the Fast Secure File System)格式存储的(SVN 两种存储格式(BDB和FSFS)区别)。
把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中。如果是FSFS格式,这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差异数据和日志等信息 。(摘自:上传的文件放在SVN服务器的哪个目录下,上传svn服务器目录)
在协同开发中,版本控制是必备的。今天我想在我自己的电脑和公司电脑之间保持一些文档的同步,通过QQ等工具传来传去的很不方便,没有svn方便,之前也没有自己搭建过svn服务器,所以顺带学习下如何搭建svn服务器。
2、查看系统自带的svn版本等信息
在终端中输入:svnserve -- version可以看到如下信息:
$ svnserve --version
svnserve, version 1.7.22 (r1694152)
compiled Feb 10 2016, 16:22:46
Copyright (C) 2015 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository back-end (FS) modules are available:
- fs_fs : Module for working with a plain file (FSFS) repository.
3、创建svn路径path
$ sudo mkdir -p /Users/(根据自己的用户名修改)/svn/mycode
4、创建svn repository
$ sudo svnadmin create /Users/(根据自己的用户名修改)/svn/mycode
5、配置svn的用户权限
5.1 配置svnserve.conf
打开conf目录下的svnserve.conf文件,将下列配置项前面的#和空格都去掉
# anon-access = read
# auth-access = write
# password-db = passwd
# authz-db = authz
再把anon-access=read修改为anon-access=none,这样就禁止了匿名访问,只有输入账号密码才可以访问。
5.2 配置passwd
打开conf目录下的passwd文件,仿照里面的注释格式,修改为如下:
[users]
luHome = 123456
luWork = 123456
这样就分配了两个svn账号以及登录密码。
5.3 配置authz
打开conf目录下的authz文件,在这里,我们可以对上面分配的svn账号进行分组管理,可以针对不同的分组和不同的账号进行不同的权限管理。
仿照里面的注释格式,在 [groups]下面添加组名和用户名,多个用户之间用逗号(,)隔开。修改为如下:
[groups]
users=luHome,luWork
[/]
@users=rw
6、启动svn服务器
在终端中输入:svnserve -d -r /svn文件夹上层的路径/svn 【注意不是到iOS目录】
$ svnserve -d -r svn
如果终端没有报错就表示启动成功了
这个时候打开活动监视器,搜索svn,即可看到
7、下面来配置Cornerstone
选择svn server并填写红框中那些内容
server :如果服务器在本地就写localhost 在局域网的其他电脑上就写他的ip地址
repository path:这里的地址用的是上面配置svn时的代码库路径,如果上面的路径跟我不同自己改一下
最下面两个是用户名和密码,最后save就好了,如果连接成功会显示success
8、遇到问题
8.1 commit 时提示db/txn-current-lock':Premission denied
解决方案 svn文件夹权限问题
$ sudo chmod -R 777 svn/