Subversion how[Reprint]
1. Subversion简介
Subversion(简称SVN)是一款功能强大的开源版本控制工具,支持Linux和Windows平台。
SVN可以有两个访问方式,一种是独立服务器直接访问,即利用svnserve命令启动服务,通过svn://yourdomain.com/project进行访问和操作。另一种结合apache,利用HTTP协议,通过http://yourdomain.com/svn/project进行访问及各类操作。如果服务器需要在互联网上共享,一般选择后一种方式。
本文以windows平台为例,介绍SVN的安装和使用。
2. Subversion服务端配置
通常情况下,如果选择SVN Server和Apache HTTP Server各自独立安装,配置起来会比较繁琐。
为了简便起见,我选择了CollabNet Subversion安装包进行搭建和配置服务。它将Subversion 通常所需的功能集成在一个安装包中发布,能方便部署Subversion服务,从而进一步扩展了 Subversion。
2.1. 下载并安装CollabNet Subversion服务器端
在collab.net网站上下载CollabNet Subversion服务器端,1.6.3版本下载地址。
下载完毕后按照提示进行安装,安装过程中需要填入元库地址,本例中为d:/svn_repository。
2.2. 建立和导入版本库
两种方式:命令行 或 使用图形化管理工具。
命令行方式:
1、建立版本库dev
svnadmin create d:/svn_repository/dev
2、导入项目到版本库
svn import D:/dev file:///d:/svn_repository/dev/ -m "initial import”
3、显示储存库内容
svn list file:///d:/svn_repository/dev/
使用图形化管理工具
1、下载并安装TortoiseSVN
TortoiseSVN是SVN版本控制系统的一个免费开源客户端,其与Windows资源管理器的右键菜单无缝集成,因此使用非常方便。
下载地址(注意:TortoiseSVN版本需要与subversion服务端的版本一致)。
安装完毕后,在资源管理器中点击鼠标右键,会出现如下界面:
2、在E:/svn_repository下新建dev文件夹,选择右键菜单中Create repository here,创建管理元库。
3、打开Repo-browser,输入file:/// d:/svn_repository /dev,向元库中添加需要版本管理的文件夹和文件。Repo-browser界面如下图所示:
2.3. 启动服务
启动独立服务方式
svnserve –d –r e:/svn_repository/
访问方法:svn://localhost/dev
启动apache方式
cd D:/Program Files/CollabNet Subversion Server/httpd/bin
httpd.exe
访问方法:http://localhost/svn/dev/
2.4. 用户权限控制管理
svnserve独立服务方式
在新建的版本库文件夹dev中,进入conf子文件夹,该文件夹下面有三个文件进行配置。
主配置文件:svnserve.conf
在文件中去除以下内容行开头的注释关键字
#没通过验证,则无任何权限
#anon-access = none
#通过验证,最多可获得写权限
#auth-access = write
#验证文件的位置
#password-db = passwd
#权限配置文件的位置
#authz-db = authz
权限策略文件:authz
#进行权限分组和定义用户
[groups]
group_admin = admin,root
group_ guest = guest
[/]
@group_admin = rw
[/]
@group_ guest = r
用户密码设置文件passwd :
[users]
admin =123
root=345
guest=001
apache http方式
由于启动apache 后,apache不再去找SVN的svnserve.conf的相关配置信息,而使用Apache的权限控制模块,因此需要进行基于apache的权限分配。
1、创建用户(htpasswd –cm authfile username)
cd D:/Program Files/CollabNet Subversion Server/httpd/bin
htpasswd -cm "d:/svn_repository/passwords.auth" admin
运行命令后,根据提示输入admin用户密码,系统会在d:/svn_repository/文件夹下生成passwords.auth文件,用户密码进行散列运算后以加密方式保存在该文件中。
因为已经生成了文件,在创建第二个用户时,我们就不必输入 -c 开关了。
2、更新Apache httpd.conf参数
打开D:/Program Files/CollabNet Subversion Server/httpd/conf /httpd.conf文件,找到:
<Location /svn>
DAV svn
SVNParentPath d:/svn_repository
</Location>
修改成如下所示:
<Location /svn>
DAV svn
SVNParentPath d:/svn_repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile "d:/svn_repository/passwords.auth"
Require valid-user
</Location>
重启Apache Server,再次访问http://localhost/svn/dev/就需要输入用户名和密码。
3、利用SSL 增强传输安全性
通过 Apache 的网络链接,版本库中的代码和数据可以在互联网上传输,为了避免数据的明文传输,实现安全的版本控制,可以对数据的传输进行加密。Apache 提供了基于 SSL 的数据传输加密模块 mod_ssl,有了它,用户就可以用 https 协议访问版本库,从而实现数据的加密传输。参考资料一中有相关内容和方法的介绍。
3. Subclipse插件与Eclipse的集成
Subclipse插件是Eclipse下SVN的客户端管理插件,由于集成在了Eclipse环境下,使用非常方便,基于Eclipse平台的开发人员可以不再安装其他SVN的客户端软件。
安装方法:在Eclipse 3.4工作台“Help>Software Updates”菜单下,add Site并安装即可。
Site地址:http://subclipse.tigris.org/update_1.6.x
安装后重启Eclipse,在Open Perspective中就可以切换到SVN资源库,进行检出等操作了。
如果要增加新的管理项目,需要添加新的Repository,然后可在Package Explorer里点击一个Project,右键Team->Share Project...即可添加进Repository。
4. 通过Internet访问服务
由于我们安装的服务器是在局域网中,因此不经过设置,外网用户是访问不到我们服务器的。要通过Internet访问Apache服务,可利用路由器端口映射的方式将Apache服务80端口映射到外网IP的某一端口上,这里采用的技术为NAT(Network Address Translation)。
由于不同的路由器设置端口映射的方法不同,因此在这里不详细描述,可参考相关资料。
因为路由器上设置了映射到内网了,因此内网是无法通过外网IP的端口地址访问到我们的Apache服务,只能通过内网IP访问,因此会对我们调试带来一些麻烦。你可以委托在线的QQ、MSN好友帮你访问测试,也可以通过在线代理服务网站进行访问测试,在这里提供一个此类网站:http://www.zqzj.net/。
设置好后,我们就可以通过http://外网IP /svn/dev/来访问我们的管理元库了。
5. 绑定固定域名访问
如果我们的网络是通过ADSL拨号上网,那么每次拔号后IP都会改变,这会给外网访问我们服务器带来麻烦。因此要解决的问题就是将内网中的版本控制服务器通过域名绑定,使其在外网通过固定域名也可以访问到。
花生壳是国内一款免费的动态域名解析软件,如果你申请了一个***.vicp.net (虚构的) 的免费域名,并在你的机器上运行了花生壳,那么互联网上任何人均可以通过***.vicp.net这个域名来访问你的电脑了!客户端访问就不再需要知道真实的IP地址。
使用花生壳的方法请参阅参考资料。
设置好后,我们就可以通过http:// ***.vicp.net /svn/dev/来访问我们的管理元库了。
参考资料:
用 Apache 和 Subversion 搭建安全的版本控制环境
NAT原理简介、各种 ADSL Modem 及路由器的端口映射方法
[Collected from]http://blog.csdn.net/wu_07/article/details/5058218
Subversion how[Reprint]的更多相关文章
- Subversion under Linux [Reprint]
一.安装 yum install subversion 二.配置 本系统采用为每个项目单独建一版本库的策略.配置文件,密码文件,访问控制文件等都放在版本库的conf目录下. 所以每次开始一个新项目都必 ...
- Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)
所要用到的主要插件: [MSBuild Plugin] 具体操作: 1.配置MSBuild的版本 [系统管理]->[Global Tool Configuration]->[MSBuild ...
- 【转】Windows平台下的Subversion安装配置新手指南
原文地址:http://developer.51cto.com/art/201005/199628.htm 本文介绍Subversion安装配置快速指南,首先讲Subversion的安装和配置,Uni ...
- SubVersion Ubuntu
UbuntuサーバにSubversionを入れる Linux, 開発ツール | Ubuntuサーバが無事に動いたので.続いてSubversionを入れてみる. こんな感じの環境を考える. Apa ...
- 安装subversion
安装subversion需要依赖apr.apr-util.sqlite 下载安装包,放在/usr/file目录 subversion-1.9.4.tar.gz apr-1.5.2.tar.gz apr ...
- Can't use Subversion command line client: svn Probably the path to Subversion executable is wrong. Fix it.
1.最近使用SVN工具时,Checkout出项目到本地后后,然后将其导入到Intellij idea中开发,在提交svn代码的时候,出现这样的错误:Can't use Subversion comma ...
- linux上安装subversion
1.安装svn服务器端 yum install subversion 从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认 安装成功提示:.....complete! 依次执行 ...
- 使用intellij的svn时提示出错: Can't use Subversion command line client: svn.Errors found while svn working copies detection.
使用Intellij的svn时提示出错:Can't use Subversion command line client: svn. Errors found while svn working co ...
- 使用命令行 Subversion 访问项目源文件(SVN)
from:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cn 命令行 Subversion 入门 如果您参与的项目 ...
随机推荐
- html轮播效果的实现
要实现如下图的效果 点击可以选择图片:不点击的时候自动轮播:并且点击完后再次自动轮播. 思路:如同在房子里透过窗子看路过的火车一样,窗子是不动的,但火车是陆续经过窗子的,所以透过窗子可以看到依次看完所 ...
- android ArrayAdapter 如何动态更改数据
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示,使用adpater与listview捆绑后,有时希望在程序使用过程中能动态的更改l ...
- Bootstrap 标签页和工具提示插件
一.标签页 标签页也就是通常所说的选项卡功能. //基本用法 <ul class="nav nav-tabs"> <li class="active&q ...
- yum-config-manager YUM安装遭遇: [Errno 256] No more mirrors to try CentOS yum之$releasever和$basearch
YUM安装遭遇: [Errno 256] No more mirrors to try createrepo 有问题. CentOS yum之$releasever和$basearch分类: 操作系统 ...
- python : dictionary changed size during iteration
1. 错误方式 #这里初始化一个dict >>> d = {'a':1, 'b':0, 'c':1, 'd':0} #本意是遍历dict,发现元素的值是0的话,就删掉 >> ...
- Linq&Lumbda
var y = from model in list.Where(s=>s.product==product||product=="") ...
- JavaScript操作数组
数组被描述为一个存储元素的线性集合,元素可以通过索引来任意存取. 几乎所有的编程语言都有类似的数据结构,但是Javascript中的数组却略有不同. Javascript中的数组是一种特殊的对象,所以 ...
- Android笔记:C memory copy
socket通讯问题之一: 在c中按字节发送数据 比如设备1状态(1字节)值(1字节)设备2状态(1字节)值(1字节)....这种格式拆分的问题 在c中可以利用struct的 memory copy ...
- 【上手centos】一、前情以及sublime_text_3安装
笔记本自大一入手,只重装过一次系统,从不曾拆机清灰过.读研之后,日常工作与学习都在实验室进行,笔记本一直在宿舍的桌子上落灰,只偶尔打开来看个电影.上周末,心血来潮,把笔记本抱到实验室拆了清灰,以前一直 ...
- 关于带透明度的灰度层的show、hide
原理图如下:[需要注意的是,灰度View与中间的小View是并列的关系,否则,带透明度的灰度图就会影响小View的透明度] - (void)show{ UIWindow *win = [[UIAppl ...