在编写项目的过程中使用版本管理器管理代码蛮重要的,假如我们是在Windows服务器中使用TortoiseSVN配置SVN服务器还是蛮简单的,可是如果我们使用Linux作为服务器,并且使用Windows作为客户端时总会出现这样那样的错误,而且有时候对这些错误根本无从下手。因此我把我自己的配置过程写下来,可能会对以后的自己或者他人带来帮助。
一、 在Ubuntu下配置SVN服务器
1.1 安装SVN命令:#sudo apt-get install subversion
1.2 创建SVN存储所有项目的目录:#mkdir /home/svn(注:root用户才可以直接创建,否则需要用#sudo mkdir /home/svn)
1.3 创建项目仓库,并且初始化项目仓库:#svnadmin create /home/svn/project
1.4 进入文件系统中目录为home/svn/project修改以下三个文件:
文件(1):home/svn/project/conf/svnserve.conf
删除12行(#anon-access = read),13行(# auth-access = write),20行(# password-db = passwd),27行(# authz-db = authz)之前的#号。
12行表示匿名访问的方式是读取(也可以设置为none,表示没有任何权限)
13行表示登陆用户名密码的访问权限是write
20行表示用户名、密码的设置文件是passwd(之后还需要配置)
27行表示用户组的权限设置文件是zuthz
文件(2):home/svn/project/conf/passwd
在[users]标签下添加用户名密码,如:admin=password,每行可以添加一个用户。
文件(3):home/svn/project/conf/authz
在[groups]标签下添加用户组,如:admin_p=admin,如果一个组有多个用户,可以用逗号隔开。(如,admin1、admin2,那么可以配置为admin_p=admin1,admin2)
添加标签[/],并在下边添加@admin_p=rw和*=r,[/]表示根目录,@admin_p=rw表示admin_p用户组对根目录有读写(rw)权限,*=r表示其他用户均只有读取的权限。
1.5 启动服务器命令:#svnserve -d -r /home/svn
1.6 之后可以在服务器上直接测试svn:
#svn co svn://127.0.0.1/project(co表示checkout,也就是读取project目录下的文件)
Username:admin
Password for ‘admin’:password
#svn add main.c(添加mian.c文件)
#svn commitmian.c –m ‘test’(提交main.c文件,附加信息为test)
Svn的提交分为添加和提交两部分。
二、在Windows下使用TortoiseSVN客户端安装TortoiseSVN客户端还是非常简单的,只需要按照一直点下一步就好。最终那装好后你的右键菜单里会多出来两项(SVN Checkout…和TortoiseSVN)。其中SVN Checkout和之前的svn co svn:127.0.0.1/project是同一个命令,无非是图形化了。
我们要将服务器中的项目导出到本地,可以按如下步骤:
2.1 新建一个目录用于放置我们的项目,如D:/svn
2.2 进入D:/svn文件夹在文件夹空白区域点击鼠标邮件的SVN Checkout,之后会弹出checkout对话框,要求填写配置信息。请注意URL of repository:的地址是svn://192.168.216.132/project,其中svn是协议名,后边是你的服务器的地址,最后project是你的仓库的名字。
网上会有很多教程会让使用http://192.168.216.132/project这样的地址访问仓库,但是这是需要开启网络服务的,如果你没有开启网络服务而使用http: //192.168.216.132/project会看到如下提示:
Checkout fromhttp://192.168.216.132/project, revision HEAD, Fully recursive, Externalsincluded
Unable toconnect to a repository at URL 'http://192.168.216.132/project'
Error runningcontext: No connection could be made because the target machine actively refused it.
Unable toconnect to a repository at URL 'http://192.168.216.132/project'