SVN配置 on Mac OX
本文介绍在Mac OX下配置SVM的方法
SVM(Subversion)是一个版本控制器,类似于git. 用法相当于在线文件夹,不同时间段的文件状态都会储存,所谓的跨越时空的文件管理方式
安装
Mac Ox 10.x 以上就会自带svn,先测试一下(terminal端):
1 | svn --version |
如果出现:
1 | svn, version 1.9.4 (r1740329) |
就是说明已安装。
创建仓库
本地代码仓库
在你想创建本地仓库的地方建文件夹,在命令行中进入文件夹路径:
1 | svnadmin create ./ |
然后在该文件夹路径下会自动生成mycode文件夹,里面有包括config在内的多个文件。自动创建本地仓库成功~
配置
主要需要修改/svn/mycode/conf目录下的三个文件:
- svnserve.conf
1 | anon-access = read |
原来是这样,然后把前面的#
包括空格都删掉,保存。
- 打开passwd,在[users]下面添加帐号和密码
1 | [users] |
按照如上格式写,等号前面是用户名,后面是密码。可以用多组用户名密码,对应不同访问者。
- 打开authz,配置用户组和权限
设置用户组,方便对各个组设置权限
1 | [groups] |
设置权限:(对组)
1 | [\] |
设置权限:(对个人)
1 | [\] |
对人不用“@”,对组需要@。rw分别指 read , write。
启动svn服务器端
1 | svnserve -d -r <local-url> |
在终端中启动svn服务器。如果没有提示,则说明启动成功。如果此时要使用客户端,则需要另外开启一个终端。
下载远程仓库
该命令将远程仓库clone到本地,具体命令:
1 | svn checkout repository-url --username=arabela --password=love local-save-url |
其中,repository-url
是远程仓库存储的网址,local-save-url
是本地存储的路径,username
的等号后面跟着用户名,password
等号跟着密码。
两种checkout方法,第一种是标准的方法,需要直接跟着用户名和密码,之后就不需要再输入。但是经过测试,这样的方式,会出现类似的问题:
1 | [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5:prepare (default-cli) on project mbg-plugin: Unable to commit files |
这是因为Mac有账号管制的问题,这篇博客中有提到这个问题。但是当用它的方法实现时,仍然不能成功。
之后看到一篇博客讲了一种尝试方法(13年的,漏洞已修复),居然成功了~就是方法2,即把username 和password先删去,直接 svn checkout <repository-url> <local-save-url>
. 这之后会要求我们输入账号密码,也就是你打开mac桌面时输入的密码,即可交付一次权限,解决了账号管理的问题。之后会提示输入账号和密码,即可进入.
【更新于2017.4.8】
如果出现Access to '...' forbidden
问题出在:
- 大小写敏感——检查远程路径的大小写和你checkout的路径的大小写是否一致
- 路径不对
上传至仓库
第一次上传
在本地仓库中放入了文件之后,需要进行上传。在第一次上传时,执行(在svn路径下):
1 | svn import ./ <repository-url> -m "first commit" |
import后面有两个参数,第一个是本地路径,因为在该文件夹的路径下,所以直接./ 第二个参数是远程路径。如果是本地服务器,则是svn://localhost/mycode
(在启动svn服务器端之后另外开一个终端)。 后面的-m是跟着对于这次更新的注释, 用双引号引起来。
之后的上传
1 | svn add file-name |
【更新于 2017-11-6】 如果在pull之前就不小心又add 了新文件,而新文件正好和其他合作者update的文件冲突,则会报错。
这时候要取消上传,再对冲突文件进行解决:
1 | svn resolved conflict-file-name |
更新本地仓库
如果是多人维护的仓库,则每次修改之前,要进行update一次,看看别人是否有对该项目修改过,类似于git pull。在本地仓库的文件夹路径下执行:
1 | svn update |
其他
1 | svn help |
帮助文档。如果help之后不加其他的,就会将所有的svn命令都输出;如果help后面跟命令,如svn help commit
,则会输出关于commit的相关方法和所带参数。
参考博客:
http://www.cnblogs.com/mjios/archive/2013/03/10/2952258.html