windows下SVN解决方案

准备工作:
1、 Http服务器:apache2.X  官方网站为http://httpd.apache.org/
2、 Svn:官方网站为http://subversion.tigris.org/
3、 客户端程序(可选):TortoiseSVN(如果想用此工具建库,要注意版本应该是SVN服务器支持的版本,最好是和subversion相同的版本)

开始安装:

1、 apache服务器正常安装即可,如果80端口正在使用,为避免安装时出现端口冲突,可暂时停止80端口对应的服务(如:IIS)。安装完成可以通过修改apache的httpd.conf中的listener来更改apache的端口,我这里修改成了808。
2、 SVN:安装简单一路next即可。
3、  客户端程序(可选):TortoiseSVN,一路next,安装完要重启。

 

二、配置

1、首先将Subversion安装目录bin\下面的两个文件:mod_authz_svn.so和mod_dav_svn.so复制到Apache安 装目录modules\目录下; 再将Subversion安装目录bin\下面的所有.dll文件复制到Apache安装目录bin\目录下。
2、 需要再修改httpd.conf,并做如下修改:
找到Apache安装目录下的conf目录,用文本编辑器打开httpd.conf,找到一下两行:
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
将每行前面的注释符“#”去掉。再在所有LoadModule语句的最后添加一下几行:


#SVN
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

3、 建立一个SVN存放文件的目录,例如:D:\svnrepo。
4、 告诉Apache我们的资源库所在的路径,可以通过Location指令来完成这个设置。因为不希望为每个单独的项目都进行单独的设置,所以我们把所有项 目都存放在统一的资源库目录,那么可以使用SVNParentPath指令来指定存放所有项目的路径。在httpd.conf文件最后添加下面配置:  
#SVN
<Location /svn/>
    DAV svn
    SVNListParentPath on
    SVNParentPath "D:/svnrepo"
    #SVNPath "D:/svnrepo/test"
    ####################认证的类型
    AuthType Basic
    #################### 认证的名称,显示于登录提示框
    AuthName "Subversion 资源库,请登录 !"
    ####################Which password file to use for authentication 存储用户登录信息的文件
    AuthUserFile D:\svnrepo\passwd
    #################### 限定各个用户或组在版本库中目录的访问权限
    AuthzSVNAccessFile D:\svnrepo\svnaccessfile
    #################### 让所有用户对版本库都有读的权限而只有特定的用户才有写的权限
    Require valid-user
</Location>

三、创建SVN资源库

      可以直接用命令来创建,在命令行窗口,转到D:\svnrepo目录下,执行如下命令:

svnadmin create test
     执行完之后,在D:\svnrepo目录下就创建了一个test资源库。

四、添加用户:
打开命令行工具(cmd.exe),转到apache的bin目录下,参考以下命令添加用户。
说明:创建用户 admin
输入:htpasswd –c D:\svnrepo\passwd admin
说明:使用-c参数来创建一个passwd文件
输出:
New password: *****
Re-type new password: *****
Adding password for user buffer
再创建用户的时候就不用-c参数,而是用-m参数,因为文件passwd 已经创建。可以用上面命令加入更多用户,如user1,user2,user3...。

      接下来,在D:\svnrepo下新建一个svnaccessfile文件,用于控制passwd中每个用户对目录的读写权限。编写内容如下:
[groups]
admin = buffer
team1 = user1,user2

team2 = user2,user3


# 为所有库指定默认访问规则
[/]                           #[/]代表根目录
* = r                       # 所有人可以读
@admin = rw           #管理员可以写
dangerman =           #危险分子没有任何权限

# 允许开发人员可以完全访问他们的项目版本库 test
[test:/]
@team1 = rw

用浏览器测试:

      在地址栏输入 http://localhost:808/svn/  进行测试,可以弹出所输入用户名密码的提示框,只要输入上面创建的用户名和密码,就可以浏览相应目录下的内容了。

五、配置每个svn资源库

     上面第四步配置完之后,可以在IE中进行测试了,但是此时如果在客户端TortoiseSVN或着命令行中测试时会提示没有权限访问。如果想用客户端访问,就需要配置每个svn库下的conf目录下的svnserve.conf、passwd、authz三个文件。

     打开/conf/目录,打开svnserve.conf找到一下几句:

 [general]

# anon-access = read

# auth-access = write
# password-db = passwd

#authz-db = authz

去之每行开头的#,并将anon-access = read匿名只读,改成anon-access = none匿名用户不能访问,必须要有用户名和密码。(注意:一定要注意格式去掉注释后要顶格不能有空)。

其中password-db = passwd是指定身份验证的文件名,即passwd文件,同样打开passwd文件,将

# [users]
# harry = harryssecret
# sally = sallyssecret

        这几行的开头#字符去掉,这是设置用户,一行一个,存储格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户。同样方法可以添加多个账户,比如,user1=123456,user2=123456 ...

上面authz-db = authz指明用户访问权限的验证文件名,同样打开authz文件,找到[groups],将[groups]之后的改为如下格式的内容

[groups]
admin = buffer
developer = niusipeng,wangqi,huangyongjian

[/]                          #admin用户组对根目录下的所有目录都有读写权限
@admin = rw
* =                         #其他用户没有权限

[test:/]
@developer = rw     #developer用户组test资源库目录下的所有目录都有读写权限
* =

 

六、客户端测试

     到此为止,我们可以用客户端进行测试了。

    服务器端的仓库已经创建成功了,接下来就是在客户端创建一个项目,然后将该项目import到服务器端,将其纳入SVN的管理之下。不过在创建项目之前我们首先需要启动服务器,服务器启动后才会进行网络侦听,检查到客户端的相关命令请求。

 

    在命令行中输入如下命令: svnserve -d -r d:\svnrepo\test ,该命令含义让 SVN 将此目录作为仓库,并侦听客户端的请求。其中 -d 的作用为后台模式,而 -r 的作用是为制定服务器的仓库路径。

当服务器启动后,请不要关闭命令行窗口,否则会吧 svnserve 的服务停下来的,接下来的操作我们可以另外打开一个命令行窗口进行。

 

    假设我们的客户端创建的项目在 E:\test\client ,我们在该目录下创建一个文件夹 child 和一个文件 test.txt ,并在该文件中增加些文本。

 

    我们首先将命令行的当前目录转到 E:\test 目录下,在命令行中输入如下命令: svn import client svn://localhost/test/ ,其中 svn://localhost 表示的是 SVN 服务器的 ip 地址,这里就表示是我们本机地址。另外 SVN 实现了自己独有的协议 SVN 协议,所以我们可以看到 url 形式是 svn:// 这样的,这个命令的作用就是client目录以及其所有子目录和文件 imort 到服务器上去,纳入 SVN 的管辖范围中。

    不幸,执行完毕后我们发现该命令失败了,弹出“ svn:无法使用外部编辑器获得日志信息;考虑设置环境变量$SVN_EDITOR,或者使用--message(-m)--file(-F)选项 ”提示信息。

   

通过命令行的说明我们看到,该命令要求我们指定好一个记录日志的文件或者在系统环境变量中增加一个SVN_EDITOR的变量。二者选一就可以了,那么我们可以增加一个SVN_EDITOR的环境变量。该变量的值我们就取为系统自带的记事本就可以了。方法同前面说的path环境变量一样。在系统的环境变量中新建SVN_EDITOR,将它的值设为notepad即可

 

SVN_EDITOR=notepad

 

    注意,设置完环境变量后,要关闭原来的命令窗口,重新cmd开一个命令行窗口,从而使得刚设的环境变量生效。

   

    接下来,我们重复上面的命令svn import client svn://localhost/test/ 当我们输入命令回车后,出现一个记事本的信息窗口,这证明了我们的环境变量的增加是正确的,关闭该记事本窗口。命令行如下:

 

E:\test> svn import svn://localhost

 

日志信息未修改,或未指定

 

a)终止,c)继续,e)编辑

 

----------------------------------------------------

 

我们选择c,继续

 

         接下来看到dos窗口打印出的拷贝目录到服务器成功的信息!

 

七、大功告成

          可能还有漏掉的细节,多试几次就可以了_—_!

 

接下来,我会再写一篇关于svn操作命令使用的文章!敬请期待!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值