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 搭建安全的版本控制环境

Windows下Subversion配置管理员指南

Windows下搭建和配置Subversion服务器

NAT原理简介、各种 ADSL Modem 及路由器的端口映射方法

花生壳让你的电脑拥有自己的域名

[Collected from]http://blog.csdn.net/wu_07/article/details/5058218

Subversion how[Reprint]的更多相关文章

  1. Subversion under Linux [Reprint]

    一.安装 yum install subversion 二.配置 本系统采用为每个项目单独建一版本库的策略.配置文件,密码文件,访问控制文件等都放在版本库的conf目录下. 所以每次开始一个新项目都必 ...

  2. Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)

    所要用到的主要插件: [MSBuild Plugin] 具体操作: 1.配置MSBuild的版本 [系统管理]->[Global Tool Configuration]->[MSBuild ...

  3. 【转】Windows平台下的Subversion安装配置新手指南

    原文地址:http://developer.51cto.com/art/201005/199628.htm 本文介绍Subversion安装配置快速指南,首先讲Subversion的安装和配置,Uni ...

  4. SubVersion Ubuntu

    UbuntuサーバにSubversionを入れる Linux, 開発ツール |    Ubuntuサーバが無事に動いたので.続いてSubversionを入れてみる. こんな感じの環境を考える. Apa ...

  5. 安装subversion

    安装subversion需要依赖apr.apr-util.sqlite 下载安装包,放在/usr/file目录 subversion-1.9.4.tar.gz apr-1.5.2.tar.gz apr ...

  6. 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 ...

  7. linux上安装subversion

    1.安装svn服务器端  yum install subversion       从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认 安装成功提示:.....complete! 依次执行 ...

  8. 使用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 ...

  9. 使用命令行 Subversion 访问项目源文件(SVN)

    from:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cn 命令行 Subversion 入门 如果您参与的项目 ...

随机推荐

  1. Java中的匿名对象

    匿名对象就是没有明确给出名字的对象.一般匿名对象只使用一次,而且匿名对象只在堆内存中开辟空间,而不存在栈内存的引用. 一个普通的常量字符串就可以表示一个匿名String对象. 比如可以 int len ...

  2. iframe框架里镶嵌页面;<marquee>:滚动效果;<mark>做标记;内联、内嵌、外联;选择器

    标签:①②③④⑤⑥⑦★ 框架: 一.frameset:(框架集) 1.如果使用框架集,当前页面不能有body 2.cols="300,*":左右拆分,左边宽300,右边宽剩余 3. ...

  3. 在使用EFCodeFirst中出现类型“System.Data.Objects.ObjectContext”在未被引用的程序集中定义的解决方案

    我安装了EF4.1版本,并在一个项目中映射一个数据库并生成了EF的MODEL实体层 测试:在Default.aspx页面上加了个GridView控件,后台进行绑定 using System; usin ...

  4. NRF51822之GPIOTE介绍

    Note This library is obsolete and should not be used in new designs. Instead, you should use GPIOTE ...

  5. 解读ClassLoader

    ClassLoader一个经常出现又让很多人望而却步的词,本文将试图以最浅显易懂的方式来讲解 ClassLoader,希望能对不了解该机制的朋友起到一点点作用.    要深入了解ClassLoader ...

  6. Android项目框架之图片加载框架的选择

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 从Android爆发以后,自定义的控件如EditTextWithDelete.ActionBar.P ...

  7. 转: css box-sizing的用法

    當你設定一個元素樣式為 box-sizing: border-box;,這個元素的內距和邊框將不會增加元素本身的寬度. <!DOCTYPE html> <html lang=&quo ...

  8. [LeetCode]题解(python):051-N-Queens

    题目来源 https://leetcode.com/problems/n-queens/ The n-queens puzzle is the problem of placing n queens ...

  9. 关于 Block的使用

    一.类2[类中某个值,需要反向传值到类1中,采用block方式,实现] [1.声明block属性] @property (copy, nonatomic) void(^activityPageView ...

  10. ASP.NET中身份验证

    ASP.NET中身份验证有三种方式:Windows.Forms和Passport. 1.Windows验证,基于窗体验证,需要每个页面写上验证身份代码,相对灵活,但操作过于复杂: 2.Passport ...