一、添加版本资源库
点击Cornerstone左下角REPOSITORIES栏右边的加号按钮,在弹出的视图中选择File Repository,然后选择Create a New Repository,接着开始填写资料
Where栏目是指本地服务器的存放地址,我一般是选择放在Mac的文稿里边的,那里好分辨。
Nickname是指你本地服务器的名称,随便取,你认得就好,比如我的叫做:GG Boy
Create as我一般选择与NickName同名
Compatibility就是兼容SVN的版本啦,现在Xcode7.3自带的应该是SVN 1.7吧,所以选1.7是没事的,如果你不知道你所拥有的SVN的版本号,我这边的一段命令svn --version,这样你就可以获取自己SVN的版本号了。
我运行的结果是:svn, version 1.7.22 (r1694152),也就是说我的SVN的版本号是1.7.22的
一切OK后,Add就好。
二、SVN配置
点击你的资源库文件夹,然后修改他的子文件夹conf中的authz、passwd、svnserve.conf这三个文件,直接用文本工具打开就好
1、authz
a、修改之前呢是这样的,
[groups]
harry_and_sally = harry,sally
harry_sally_and_joe = harry,sally,&joe
[/foo/bar]
harry = rw
&joe = r
* =
b、修改之后呢是这样的
[groups]
harry_and_sally = harry,sally
harry_sally_and_joe = harry,sally,&joe
testGroup =zhuzhuxia,xiaofeifei
[/]
@testGroup=rw
[/]
zhuzhuxia=rw
xiaofeifei=rw
[/foo/bar]
harry = rw
&joe = r
* =
很明显中间多了这么一串
testGroup =zhuzhuxia,xiaofeifei
[/]
@testGroup=rw
[/]
zhuzhuxia=rw
xiaofeifei=rw
首先呢,testGroup就是你所创建的组名了,自定义的,随便写。
zhuzhuxia,xiaofeifei这个呢就是你的组成员
[/]
@testGroup=rw
[/]
zhuzhuxia=rw
xiaofeifei=rw
这个就是所谓的配置权限了,[/]代表你SVN中的所有资源,再加上@testGroup=rw意思是该小组中所有成员对SVN中的所有资源具有读写权限,rw = read and write
至于为什么一直要加上 [/]
[/]
zhuzhuxia=rw
xiaofeifei=rw
我就不是很清楚了,毕竟这个涉及得少,但是你必须这样子写,不然会错得让你怀疑人生,来,看图,曾让我几度怀疑公司的加密软件的罪魁祸首
Description : An error occurred while contacting the repository at “192.168.10000.zhuzhuxia”.
Suggestion : The server may be unreachable or the URL may be incorrect.
Technical Information
=====================
Error : V4CommunicationError
Exception : ZSVNCommunicationException
Causal Information
==================
Description : Unable to connect to a repository at URL 'http://zhuzhuxia@192.168.10000.zhuzhuxia:180000'
Status : 175002
Description : OPTIONS of 'http://zhuzhuxia@192.168.10000.zhuzhuxia:180000': Could not read status line: connection was closed by server (http://zhuzhuxia@192.168.10000.zhuzhuxia:180000)
Status : 175002
2、passed
成员添加了就该设置密码了吧
修改前:
[users]
harry = harryssecret
sally = sallyssecret
修改后:
[users]
harry = harryssecret
sally = sallyssecret
zhuzhuxia=123456
xiaofeifei=123456
3、svnserve.conf
修改前:
其中有这么四段,自己去找吧
anon-access = read
auth-access = write
password-db = passwd
authz-db = author
修改后:
删掉每段前面的空格和#(2019.01.15更新,# authz-db = authz 无需更改),
其中值得注意的是:anon-access = read这个表示用于他人匿名查看你的资源,但是他仅仅具有查看功能,
anon-access = none这个呢就代表要查看资源必须具有账号和密码
anon-access = none
auth-access = write
password-db = passwd
authz-db = author
如此,SVN的权限就配置好了
三、开启你的SVN
在终端中输出指令:svnserve -d -r +你的版本库地址
强调一下:版本库地址尽量别手动输入地址,很容易出错的,直接拖文件夹进终端,他会自动生成的,地址反正比你的准确就对了
这里的版本库地址是指:你在第一步中添加的文件夹的地址,而不是你的源代码文件夹地址,比如我的就是在文稿中的GG Boy文件夹,这个文件夹名称是根据Create as那个命名的来的,而不是Nickname中的
是:svnserve -d -r /Users/hutton2/Documents/GG\ Boy ,输入完毕没反应,基本上就是成功了,不信的话自己也可以去活动监视器里面看的
如果你开启了多个svn,那你就在终端输入指令:ps aux |grep svn,然后紧跟你Mac用户名后面的那个数字,这个数字即是活动监视器里边的pid(此处是2698),并且末尾也会告诉你pid与你开启的哪个SVN相对应。当然,如果你想关闭某个SVN,你也可以获取到该pid后,在活动监视器中关闭指定进程或者在终端输入指令
kill + svn的pid
我的是:hutton2 2698 0.0 0.0 2462016 748 ?? Ss 11:38上午 0:00.03 /Applications/Xcode.app/Contents/Developer/usr/bin/svnserve -d -r /Users/hutton2/Documents/GG Boy
四、上传源文件
在Cornerstone中,光标选中居于左下角的你的版本库,然后在软件中上方就能点击import了,然后按照他的提示,去选择你要上传的源文件就好
五、Check源文件
import源文件之后,你有两种选择方式:其一为中上方的export,这个仅仅是导出源文件,他并不具有svn的基本功能,我们一般用的是check,点击cornerstone中的源文件,然后点击左上角的Check Out
Check Out As 是你导出后文件的名称,
Where是导出位置
Format是SVN的版本,别选错了
如此你自己的SVN就好了,剩余的就是你的小伙伴的工作了
六、小伙伴check源代码
打开工具Cornerstone,然后点击左下角REPOSITORIES旁边的"+",在弹出视图上选择SVN Server,填写
Server:是搭建SVN服务器之人的IP
Port:一般本地SVN服务器的应该不用写
Repository:这是资源库下代码库的地址,也就是你存放源代码的上一级,这个待会儿再细说
Nickname:这个当你填写上面之后会自动生成的
Name:你的SVN账号
Pasword:你的SVN密码
点击Add,左下方自然会生成你的资源库的,然后光标移至该资源库中的源代码,点击左上角的CheckOut,以后你写代码就得在你所check的地址中写了。
注意:下面来详细说一下这个Repository
我们都知道这是源代码存放地址,但是不明白的是为什么我此时不写地址也能拷贝出代码,其实我也不懂。但是我想要说的解法:
比如,我们多数情况下只会创建一个SVN,然后多个项目存储在资源库中,但是像我这个例子中,我们不写地址,那么我们的结果是把所有的资源都拷贝了过来,可是我们只是想要其中一部分而已呢,
此时我们就要创建子文件夹了:光标移至资源库,然后右击资源库的空白处就会出现选择菜单,点击New Floder in "GG Boy",然后按着提示做就创建了子文件夹了,此后我们不同的源代码就可以存储在一个SVN中,并且能够被单一识别。
比如我创建了一个名为BCD文件夹,你的小伙伴想要check里边的代码,那么他的Repository就得填写为BCD。
然后需要注意的一点:
大家如果想上传静态库文件,需要在屏幕上方工具栏中Coenerstone->preferences->
取消 Use default global ignores的勾选,然后删除掉下方的.a即可,当然与.a一起的那些文件后缀方法也是一样