Mac下搭建svn服务器和XCode配置svn
先打开命令行终端。
1、创建svn repository
svnadmin create /yourpath/svnroot/repository
进入下面目录配置svn用户权限。
/ yourpath /svnroot/repository/conf/目录下存在3个文件:
authz,passwd,svnserve.conf。。
2、编辑配置文件 vi svnserve.conf 取消下列行的注释
anon-access = read
auth-access = read
password-db = passwd (密码配置的保存文件)
auth-db = authz (认证配置的保存文件)
1 ### This file controls the configuration of the svnserve daemon, if you 2 ### use it to allow access to this repository. (If you only allow 3 ### access through http: and/or file: URLs, then this file is 4 ### irrelevant.) 5 6 ### Visit http://subversion.tigris.org/ for more information. 7 8 [general] 9 ### These options control access to the repository for unauthenticated 10 ### and authenticated users. Valid values are "write", "read", 11 ### and "none". The sample settings below are the defaults. 12 anon-access = read 13 auth-access = write 14 ### The password-db option controls the location of the password 15 ### database file. Unless you specify a path starting with a /, 16 ### the file's location is relative to the directory containing 17 ### this configuration file. 18 ### If SASL is enabled (see below), this file will NOT be used. 19 ### Uncomment the line below to use the default password file. 20 password-db = passwd 21 ### The authz-db option controls the location of the authorization 22 ### rules for path-based access control. Unless you specify a path 23 ### starting with a /, the file's location is relative to the the 24 ### directory containing this file. If you don't specify an 25 ### authz-db, no path-based access control is done. 26 ### Uncomment the line below to use the default authorization file. 27 authz-db = authz 28 ### This option specifies the authentication realm of the repository. 29 ### If two repositories have the same authentication realm, they should 30 ### have the same password database, and vice versa. The default realm 31 ### is repository's uuid. 32 # realm = My First Repository 33 34 [sasl] 35 ### This option specifies whether you want to use the Cyrus SASL 36 ### library for authentication. Default is false. 37 ### This section will be ignored if svnserve is not built with Cyrus 38 ### SASL support; to check, run 'svnserve --version' and look for a line 39 ### reading 'Cyrus SASL authentication is available.' 40 # use-sasl = true 41 ### These options specify the desired strength of the security layer 42 ### that you want SASL to provide. 0 means no encryption, 1 means 43 ### integrity-checking only, values larger than 1 are correlated 44 ### to the effective key length for encryption (e.g. 128 means 128-bit 45 ### encryption). The values below are the defaults. 46 # min-encryption = 0 47 # max-encryption = 256
注意删除后上面不要留空格,不然会报错:
1 .subversion/config:94: Option expected
3、编辑密码配置文件 vi passwd
1 ### This file is an example password file for svnserve. 2 ### Its format is similar to that of svnserve.conf. As shown in the 3 ### example below it contains one section labelled [users]. 4 ### The name and password for each user follow, one account per line. 5 6 [users] 7 # harry = harryssecret 8 # sally = sallyssecret 9 #username = password 10 hilary=3113
4、编辑认证文件 vi authz
格式为 [groups]
用户组名 = 用户组成员
[需要授权的目录]
@组名 = 权限
用户名 = 权限
### This file is an example authorization file for svnserve. ### Its format is identical to that of mod_authz_svn authorization ### files. ### As shown below each section defines authorizations for the path and ### (optional) repository specified by the section name. ### The authorizations follow. An authorization line can refer to: ### - a single user, ### - a group of users defined in a special [groups] section, ### - an alias defined in a special [aliases] section, ### - all authenticated users, using the '$authenticated' token, ### - only anonymous users, using the '$anonymous' token, ### - anyone, using the '*' wildcard. ### ### A match can be inverted by prefixing the rule with '~'. Rules can ### grant read ('r') access, read-write ('rw') access, or no access ### (''). [aliases] # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average [groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe # [/foo/bar] # harry = rw # &joe = r # * = # [repository:/baz/fuz] # @harry_and_sally = rw # * = r test=hilary [/] hilary=rw
对所有版本库的权限设置用[/]
group名称前要加@,用户名不加。
* = 是为所有人设置权限,这里是设置其他所有人没有读写权限。
[/]
@harry_and_sally = rw
* =
5.启动svnserve:
svnserve -d -r /opt/svn/repos
没有任何提示就说明启动成功了。
6、 将项目导入svn库.
svn import /ProjectPathYouNeedToImport/ svn://localhost/svnroot/respository/ProjectName --username username --passwordpassword -m "comment information"
7、导出项目
svn checkout svn://localhost/svnroot/respository/ProjectName --username=username--password=password /ThePathCheckoutTo/
8、如果是别的机器做的服务器,需要将localhost替换为服务器路径。
可编辑如下文件,添加名称到ip地址的映射。
sudo vi /etc/hosts
如添加红色部分
##
# Host Database
#
# localhost is used to configure theloopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
192.168.14.1 svnip
9、有用的命令
svn ls svn:// svnip/svnpath 可以查询snv仓库内容
lsof -i :3690 查看svn是否启动
ps aux | grep ‘svn’ 查找所有svn启动的进程id
kill -9 pid 将pid替换为上面查到的进程id可以杀掉svn进程
killall -9 svnserve
10、XCode配置svn
1)打开XCode
2)打开organizer,在左下角点+号,点AddRepository…
3)在弹出的界面中:
name可以随便起,Location输入为svn:// svnip/svnpath/ProjectName(路径名称什么的),按提示操作完成。
4)点organizer,在左下角点+号,点Checkoutor Clone Repository…
5)在弹出的界面中:
Location输入svn:// svnip/svnpath/ProjectName,点击Checkout,在弹出的界面中选择想要保存到哪个路径。
这样就在本地得到了一份svn服务器上的项目,可以修改,更新,提交代码了(更新提交的操作在XCode菜单-->[File]-->[Source Control]下面)。
XCode自带的svn管理功能在update和cimmit时经常出问题,不知道是不是我使用方式不对。所以特别推荐一个svn客户端工具Versions,个人觉得比XCode自带的svn客户端和svn X客户端好用得多。