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客户端好用得多。

http://www.versionsapp.com

 

 

posted @ 2013-12-03 00:37  ubersexual  阅读(699)  评论(0编辑  收藏  举报