平时开发总是免不了写一些demo,或者自己折腾一些小东西啊,无论是用公司的svn还是github总是感觉没有那么方便,于是就想自己弄一个svn的本地服务器,方便做版本控制。在网上大致搜了一下,mac下也很简单,几条命令搞定。

1.创建文件夹:

在用户目录下执行:

1
mkdir -p Coding/svn/repositories/local

2.创建版本库:

1
sudo svnadmin create Coding/svn/repositories/local/

会发现local文件夹下生成了一堆文件。

3.修改conf文件夹下的svnserve.conf文件,内容如下

1
2
3
4
5
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

4.修改conf下的passwd文件,在[users]后面加入以下内容

1
2
3
[users]
Administrator = 123456
SunQiang = 123456

5.修改conf下的authz文件,设置权限

1
2
3
4
5
6
7
8
9
10
11
[groups]
admin = Administrator
user = SunQiang
[/]
@admin = rw
@user = rw
[local:/]
@admin = rw
@user = rw

这里定义了两个组,admin 和 user ,admin这个组里面有Administrator这个用户(一个组里面可以有多个用户,多个用户用逗号隔开),user这个组里面有SunQiang这个用户。

注意!这个 / 目录是指我的repositories目录,而不是local目录。

6.启动svn服务器

1
sudo svnserve -d -r /Users/SunQiang/Coding/svn/repositories --log-file=/var/log/svn.log

7.svn默认使用3690端口,如果端口不冲突,svn服务应该就正常起来了,简单的测试一下

1
telnet localhost 3690

结果如下为正常:

1
2
3
4
5
6
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay ) ) )

7.然后即可在eclipse中使用路径

1
svn://localhost/local

8.删除此svn服务

先在activity manager中停止svnserve进程,然后删除整个svn文件夹即可

9.开机启动

网上有博文说将6里面的命令写到/etc/rc.local中,不过我试了没成功。于是将6中的命令保存到.sh文件,放入我自己写的一堆shell脚本的目录下(此目录已添加到path),用的时候直接start_svn.sh即可。

2016.10.14 update:
git挺好用的,换git了,svn玩蛋儿去~

EOF