windows版 svn 服务器搭建及总结
一直是在用svn客户端,因为一些需求需要自己搭建svn服务器。
1.下载svn服务器版本,下载下来后,解压,一路next 即可。
subversion服务端官方下载地址:http://subversion.apache.org/packages.html
tortoisesvn客户端官方下载地址:http://tortoisesvn.net/downloads.html
我的安装路径为:
2.为svn创建版本存储仓库repository。
可以使用svnadmin 命令,格式是:
意思是在d盘创建名为svntest仓库。 不清楚的可以用 svnadmin help 查看帮助。
这里我是将一个存储仓库做为svn的根路径,其实svn的根路径也可以是单单一个文件夹。用该文件夹来管理所有的资源存储仓库。
svntest 很像一个文件夹 如下图,注意 红框,每个数据仓库都会包含自己的conf和db文件夹。
3.为svn分配用户权限
svn用户权限的配置可以到很精细的程度,自己去找资料看。这里只是很简单的略过。
svn 的权限管理涉及到一下文件:
svnserve.conf -- /conf目录下 用于存放本svn库的全局访问控制信息。
passwd文件 -- /conf目录下 用于存放本svn库的用户名和密码。
authz -- /conf目录下 用于存放本svn库的访问授权信息。
这里需要注意的地方:
SVN中的这几个配置文件 是不支持每行开头带空格的。
所以 一旦你去掉每行开头的#,一定要同时将空格去掉,将每行顶到头。
svn却不会报错。
所以 这几张所截图都是错误的 开头都有空格,如果要去
链接svn的时候,就会报"权限认证失败"的错误。郁闷了很长时间才找到原因!
一 配置svnserve.conf文件
1.首先 去掉前面的#
.
2.其次 去掉前面的#
二 .配置 passwd文件
添加用户admin 用 = 分割,左边是用户名,右边是密码(明文)。
三. 配置 authz文件
稍复杂些的权限控制实例:
admin = test1
admin2 = test2
dev = dev1
[/]
@admin = rw
@admin2 = r
[/test1]
@admin2 = rw
@dev = rw
上例中,admin权限的用户可对根目录及所有子目录进行读写;admin2只能读,但可对test1子目录写;dev用户不能访问根目录,只能读写test1子目录。
4.启动svn服务。
在安装的Subversion目录下有个bin目录里svnserve.exe,我们直接运行这个文件是无效的。需要在控制台来启动他
和linux下启动svn服务类似 在cmd下 : svnserve –d –r仓库路径
说明: -d 表示服务以后台的方式启动.–r根目录 ,其实就是仓库路径【这里你可以写的绝对路径,也可以是相对路径】
默认情况下: svn服务时监听 3690
此时就不能关闭该cmd窗口,否则服务会停止。
你可以使用netstat –an 命令验证.是否在3690有监听。
------------------------------------------------------------------------------------------------------------------------
5 .将svn配置成为windows服务 让其开机自启动
需要使用windows自带的sc命令:
在cmd中输入:
sc create ”自定义的服务名称" binpath= "svnserve.exe的绝对路径" --service -r "存储仓库绝对路径" displayname= "服务显示名称和自定义的服务名相同" start= auto
我这里的格式是:
binpath指svnserve.exe的路径
(注意:如果你的路径里有空格记得要在binpath的头尾用转义字符/"把整个个binpath框起来,D:\svntest指svn资源库根目录)
displayname指服务名称
depend指协议是tcpid
start指开机自动启动
注意:以上的=后面的一个空格千万不要丢了
以上的格式是cmd的格式要求 坑爹的要求啊 搞死了,千万别在cmd中频写了 直接拷贝过去 改一下路径即可。
如果显示 “【SC】CreateServer 成功” ,则表示创建成功了,这一步类似于注册。
最后还要启动刚创建的服务:
说明:如果你创建服务没有成功,可以
(1) sc delete svn
(2) 到注册表下找到svn,删除即可
在删除服务前,一定要停止服务
(1). net stop svn
(2) sc stop svn
------------------------------------------------------------------------------------------------------------------------
启动 停止 svn服务,依赖于上一步你已经将svn注册为windows的服务。
net start svn
net stop svn
------------------------------------------------------------------------------------------------------------------------
svn的单仓库和多仓库
前面我们讲的是单仓库, 多仓库是指:仓库建立方式与单仓库一样,只是目录仓库结构有所变化。
单仓库和多仓库最大区别在于,启动svn服务的时候,仓库路径不同
比如: 比如你希望以单仓库方式启动
svnserve –d –r d:/svnserversoftware/myrepository/oa
如果你是以多仓库方式启动(直接根目录即可,这样可以启动指定目录下的所有子仓库)
svnserve –d –r d:/svnserversoftware/myrepository
以下转载若干问题
1、不知道该怎么设置 svn://url 这个路径
2、三个需要设置的文件,其中authz这个里面的[repos:/]这个到底该怎么设置
3、认证失败问题出在哪里?
4、svn import 目录1 "svn://localhost/目录2" -m "first version" 目录2到底怎么设置?
5、import 的时候出现“条目从本地编码转换到UTF8失败”
6、服务器端都没问题了,但是客户端不能连接主机
下面就根据这几个问题,一一解答:
1、svn可以分为单个或多个版本库,假设:
版本库目录为 /data/svndata/repos1
启动程序如果是:svnserve -d -r /data/svndata/repos1 这代表你当前svn只为repos1这个版本库工作,客户端访问直接svn://IP/就可以了,后面不跟目录
启动程序如果是:svnserve -d -r /data/svndata/ 这代表你当前svn可以多版本库运行,客户端访问就需要加上 svn://IP/repos1 这样才能访问repos1版本库
2、第一个问题是对应的
如果是一个版本库,那应该设置成如下:
[groups]
admin = user1,user2
[/]
@admin=rw
如果是多个版本库,那就应该设置成这样:
[groups]
admin = user1,user2
[repos1:/]
@admin=rw
3、认证失败的问题,就是对上述两个问题没有相对应的设置好,要么都安一个版本库设置,要么都安多个版本库设置,只要对应设置好,应该就是没有问题的。
4、目录2是由svn建立的,不用自己去设置,假设:
svn import /tmp/ceshi "svn://localhost/a/b/c" -m "first version"
这样的话,当你checkout的时候,你本地的目录就应该是: /a/b/c
5、呵呵,网上都说是LANG没设置好,可是我的不是这个问题,我的是导入的源文件中有些文件自身的文件名乱码,郁闷~
6、服务器都设置好了,那要是客户端还连不上,就是防火墙的问题了,去/etc/sysconfig/iptables 设置一下,打开默认的3690端口就可以了
------------------------------------------------------------------------------------------------------------------------
在myeclipse 8.5中使用subeclipse插件的若干问题:
貌似 插件的同步功能做的很无语!!!
当甲向svn中新添加存储库后,乙想使用插件checkout甲的东东 需要刷新一下才能看到甲新建的存储库。
2.当甲用户提交了新的分支或者tag的时候,如果乙用户需要查看 则 也需要及时刷新 才能看到
部分内容来源:http://blog.csdn.net/woshiwxw765/article/details/7537448