SubVersion 是一个近期才开始流行起来的版本控制系统。而其作者也就是CVS系统的主要作者本人,一个轻量服务器型的,具备分支管理
Subversion相对CVS来讲有以下几点优势:
- 增加了元数据(Meta-data)的版本控制,Subversion有很多设置都是通过元数据实现的。
- 增加了文件夹的版本控制,没有文件夹的版本控制是CVS中一个很大的不足,这点在Subversion中得到了解决。
- 支持文件、文件夹的重命名与移动,好处多多,方便多多,不用再描述了吧。
- 真正的原子提交(Truly Atomic Commits),提交作为一个事务,如果某一受控对象提交失败,那么其他提交的对象也不会有效。这个功能真是一个字:好!同时支持不同仓库(Repository)中受控对象的同时提交。
- 一些性能上的优化,如分支(Branching)与标签(Tagging)会采用文件夹的受控方式达到优化。
1. 安装Subversion
a) http://subversion.tigris.org/files/documents/15/23230/svn-1.2.0-setup.exe下载该安装文件
系统共分为:
SubVersion,从 http://subversion.tigris.org/ 下载,是实现服务系统的软件。
TortoiseSVN,从 http://tortoisesvn.tigris.org/ 下载,是很不错的 SVN 工作程序,结合到文件管理器中,用起来很方便。
SVNService.exe,从 http://dark.clansoft.dk/~mbn/svnservice/ 下载,是专为 SubVersion 开发的一个用来作为 Win32 服务挂接的入口程序。
系统共分为:
SubVersion,从 http://subversion.tigris.org/ 下载,是实现服务系统的软件。
TortoiseSVN,从 http://tortoisesvn.tigris.org/ 下载,是很不错的 SVN 工作程序,结合到文件管理器中,用起来很方便。
SVNService.exe,从 http://dark.clansoft.dk/~mbn/svnservice/ 下载,是专为 SubVersion 开发的一个用来作为 Win32 服务挂接的入口程序。
2,安装SVN Server
(1) 安装svn-1.0.9-setup.exe,安装目录为D:/Program Files/Subversion.
(2) 安装TortoiseSVN-1.1.2-UNICODE_svn-1.1.2.msi.安装目录为D:/Program Files/TortoiseSVN.
安装后者需要重启计算机.
(3) 建立一个存放源代码的目录SVNROOT,如 e:/ work。
建立新目录E:/work/proj1,作为Repository的主目录.使用创建工作区域, 对该目录进行初始化
svnadmin create E:/work /proj1
该目录下产生版本控制需要的数据库结构。
(4) 启动svn 服务器实例
svnserve -d -re:/work
就可以创建以 e:/work为工作根目录的 svn 服务器实例。
(5) 将SVN Server包装成服务运行:
拷贝SVNService.exe到D:/Program Files/Subversion/bin
开始->运行. 输入"cmd",回车,进入命令行界面.
进入D:/Program Files/Subversion/bin. 运行 SVNService -install -d -re:/work .
将SVN Server注册成后台服务,并将Repository主目录设置到E:/work.
(6) 进入计算机管理->服务和服务程序->服务 ->SVNService服务,将其启动类型从手动改为自动.
(7) 启动服务.
(8) 如果安装有防火墙,则需要打开3690端口.
(1) 安装svn-1.0.9-setup.exe,安装目录为D:/Program Files/Subversion.
(2) 安装TortoiseSVN-1.1.2-UNICODE_svn-1.1.2.msi.安装目录为D:/Program Files/TortoiseSVN.
安装后者需要重启计算机.
(3) 建立一个存放源代码的目录SVNROOT,如 e:/ work。
建立新目录E:/work/proj1,作为Repository的主目录.使用创建工作区域, 对该目录进行初始化
svnadmin create E:/work /proj1
该目录下产生版本控制需要的数据库结构。
(4) 启动svn 服务器实例
svnserve -d -re:/work
就可以创建以 e:/work为工作根目录的 svn 服务器实例。
(5) 将SVN Server包装成服务运行:
拷贝SVNService.exe到D:/Program Files/Subversion/bin
开始->运行. 输入"cmd",回车,进入命令行界面.
进入D:/Program Files/Subversion/bin. 运行 SVNService -install -d -re:/work .
将SVN Server注册成后台服务,并将Repository主目录设置到E:/work.
(6) 进入计算机管理->服务和服务程序->服务 ->SVNService服务,将其启动类型从手动改为自动.
(7) 启动服务.
(8) 如果安装有防火墙,则需要打开3690端口.
3,安装SVN+Apache
。
首先,SVN模块加载上,修改Apache的配置文件httpd.conf:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule dav_module modules/mod_dav.so
LoadModule authz_svn_module modules/mod_authz_svn.so
然后配置仓库:
<Location /svn>
DAV svn
SVNParentPath d:/svn
</Location>
然后,配置验证方式:
这里使用旦Apache的验证方式:
htpasswd -cm d:/svn/svn-auth-file user1
然后,会提示输入密码,这里就加入了一个用户了。然后再加一个用户:
htpasswd -m d:/svn/svn-auth-file user2
然后修改配置:
<Location /svn>
DAV svn
SVNParentPath d:/svn
AuthType Basic
AuthName “Subversion repository”
AuthUserFile d:/svn/svn-auth-file
Require valid-user
AuthzSVNAccessFile d:/svn/svn-access-file
</Location>
下面,就要写这个svn-access-file文件了,它是用来控制用户访问仓库的权限的,我们把说明写在后面
[svn1:/] //这表示,仓库svn1的根目录下的访问权限
harry = rw // svn1仓库harry用户具有读和写权限
sally = r // svn1仓库sally用户具有读权限
[svn2:/] //svn2仓库根目录下的访问权限
harry = r // harry用户在svn2仓库根目录下只有读权限
sally = // sally用户在 svn2仓库根目录下无任何权限
#[/] // 这个表示在所有仓库的根目录下
#* = r // 这个表示对所有的用户都具有读权限
#[groups] // 这个表示群组设置
#svn1-developers = harry, sally // 这个表示某群组里的成员
#svn2-developers = sally
#[svn1:/]
#@svn1-developers = rw // 如果在前面加上@符号,则表示这是个群组权限设置
将这个设置完成后。重启Apache,就可以通过
http://localhost/svn/svn1
http://localhost/svn/svn2
。
首先,SVN模块加载上,修改Apache的配置文件httpd.conf:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule dav_module modules/mod_dav.so
LoadModule authz_svn_module modules/mod_authz_svn.so
然后配置仓库:
<Location /svn>
DAV svn
SVNParentPath d:/svn
</Location>
然后,配置验证方式:
这里使用旦Apache的验证方式:
htpasswd -cm d:/svn/svn-auth-file user1
然后,会提示输入密码,这里就加入了一个用户了。然后再加一个用户:
htpasswd -m d:/svn/svn-auth-file user2
然后修改配置:
<Location /svn>
DAV svn
SVNParentPath d:/svn
AuthType Basic
AuthName “Subversion repository”
AuthUserFile d:/svn/svn-auth-file
Require valid-user
AuthzSVNAccessFile d:/svn/svn-access-file
</Location>
下面,就要写这个svn-access-file文件了,它是用来控制用户访问仓库的权限的,我们把说明写在后面
[svn1:/] //这表示,仓库svn1的根目录下的访问权限
harry = rw // svn1仓库harry用户具有读和写权限
sally = r // svn1仓库sally用户具有读权限
[svn2:/] //svn2仓库根目录下的访问权限
harry = r // harry用户在svn2仓库根目录下只有读权限
sally = // sally用户在 svn2仓库根目录下无任何权限
#[/] // 这个表示在所有仓库的根目录下
#* = r // 这个表示对所有的用户都具有读权限
#[groups] // 这个表示群组设置
#svn1-developers = harry, sally // 这个表示某群组里的成员
#svn2-developers = sally
#[svn1:/]
#@svn1-developers = rw // 如果在前面加上@符号,则表示这是个群组权限设置
将这个设置完成后。重启Apache,就可以通过
http://localhost/svn/svn1
http://localhost/svn/svn2
4,TEST
(1) 在E:/work下新建目录"proj",点右键,TortoiseSVN->Create Repository Here,选择BDB.
(2) 进入E:/work/proj/conf
在E:/work/proj/conf目录下,新建users.conf文件.users.conf保存用户名和密码.格式如下:
[users]
username = password
(1) 在E:/work下新建目录"proj",点右键,TortoiseSVN->Create Repository Here,选择BDB.
(2) 进入E:/work/proj/conf
在E:/work/proj/conf目录下,新建users.conf文件.users.conf保存用户名和密码.格式如下:
[users]
username = password
用文本编辑器打开svnserve.conf,向其中添加
[general]
anon-access = none
auth-access = write
password-db = users.conf
[general]
anon-access = none
auth-access = write
password-db = users.conf
(3) 点右键,TortoiseSVN->RepoBrowse,输入svn://<serverip>/Default,回车.
输入users.conf中存在的用户名和密码,就可以进入Repository
输入users.conf中存在的用户名和密码,就可以进入Repository
5.客户端可以有多种:
TortoiseSVN
6.主要功能
svn ADD
svn Delete
svn copy
svn move
svn status
svn diff
svn merge
svn checkin
svn checkout
svn commit
svn update
svn ADD
svn Delete
svn copy
svn move
svn status
svn diff
svn merge
svn checkin
svn checkout
svn commit
svn update
7. 连接到仓库的方法URL
连接到仓库的方法(在客户端),有以下五种:
连接到仓库的方法(在客户端),有以下五种:
- file:///ReposPath/RepoPath,以文件的形式直接访问,最简单的连接方法,不需要服务器,权限由操作系统来控制,如果后台仓库你采用了FSFS(文本)格式还可以在局域网共享中使用。
- http://serverip/Repos/Repo,采用了Apache作为服务器的话就可以以这种形式访问,权限由Apache设置。
- https://serverip/Repos/Repo,与上一个一样,同时采用了HTTPS加密通信。
- svn://serverip/Repos/Repo,采用了svnserve作为服务器的话那么就可以采用这种形式访问,它是一种基于TCP/IP的访问方式。权限由仓库的配置文件设置。
- svn+ssh://Repos/Repo,与上一个一样,同时采用了SSH的加密通信。
论坛
http://subversion.tigris.org/
相关网站
http://subversion.tigris.org/ SVN
http://tortoisesvn.tigris.org/ TortoiseSVNhttp://dark.clansoft.dk/~mbn/svnservice/ SVN Service Wrapper
http://subclipse.tigris.org/ SVN eclipse
http://ankhsvn.tigris.org/ SVN nethttp://svnbook.red-bean.com/ Book: Version Control with SVN http://svn.ntcu.net/kwiki/
http://ankhsvn.tigris.org/ SVN nethttp://svnbook.red-bean.com/ Book: Version Control with SVN http://svn.ntcu.net/kwiki/
http://sun.cis.scu.edu.tw/~nms9115/articles/softeng/scm/svn/2-install/svn_install.htm SVN for Windows
http://svn.ntcu.net/svnbook/ SVN BookD.1 客户端和插件
AnkhSVN (http://ankhsvn.tigris.org/)
微软 Visual Studio .NET 的 Subversion 插件
JSVN (http://jsvn.alternatecomputing.com/)
Java Subversion 客户端,包含一个 IDEA 的插件
psvn.el (http://xsteve.nit.at/prg/vc_svn/)
Emacs 的 Subversion 接口
RapidSVN (http://rapidsvn.tigris.org/)
基于 WxPython libraries 的跨平台的 Subversion 图形化客户端
Subclipse (http://subclipse.tigris.org/)
Eclipse 下的 Subversion 插件
Subway (http://nidaros.homedns.org/subway/)
Microsoft SCC provider for Subversion
sourcecross.org (http://www.sourcecross.org/)
Microsoft SCC provider for Subversion
Supervision (http://supervision.tigris.org/)
Subversion 的 Java/Swing 图形化客户端
Sven (http://www.nikwest.de/Software/#SvenOverview)
使用 Mac OS X Cocoa 框架开发的 Subversion 图形化客户端
Svn4Eclipse (http://svn4eclipse.tigris.org/)
为 Eclipse IDE 设计的 Subversion 插件
Svn-Up (http://svnup.tigris.org/)
基于 Java 的 Subversion 以及 IDEA IDE 的插件
TortoiseSVN (http://tortoisesvn.tigris.org/)
作为微软 Windows 外壳扩展设计的 Subversion 客户端
WorkBench (http://pysvn.tigris.org/)
在 Subversion 基础上构建的基于 Python 的跨平台软件设计环境
D.2 和语言的绑定
PySVN (http://pysvn.tigris.org/)
供 Python 使用的面对对象的 Subversion 客户端 API 项目
Subversion (http://subversion.tigris.org/)
供 Python、Perl、和 Java 使用的 Subversion API;对应于核心的 C API
SVNCPP (http://rapidsvn.tigris.org/)
供 C++ 的面对对象的 Subversion 客户端 API
D.3 仓库转换工具
cvs2svn (http://cvs2svn.tigris.org/)
从 CVS 到 Subversion 的转换
vss2svn (http://vss2svn.tigris.org/)
从 Microsoft SourceSafe 到 Subversion 的转换
Subversion VCP Plugin (http://svn.clkao.org/revml/branches/svn-perl/)
从 CVS 到 Subversion 转换的 VCP 插件
D.4 更高领域的一些工具
Kwiki (http://www.kwiki.org/)
带有 Subversion 备份支持的 Wiki
Scmbug (http://freshmeat.net/projects/scmbug/)
集成了漏洞跟踪的软件配置管理系统,支持 Subversion
Subissue (http://subissue.tigris.org/)
直接在 Subversion 仓库中跟踪发布
Subwiki (http://subwiki.tigris.org/)
使用 Subversion 作为数据仓库 的 Wiki
svk (http://svk.elixus.org/)
基于 Subversion 的分散式的 版本控制系统
submaster (http://www.rocklinux.org/submaster.html)
基于 Subversion 的分布式的软件开发系统
D.5 仓库浏览工具
SVN::Web (http://svn.elixus.org/repos/member/clkao/)
基于 Perl 的 Subversion 仓库 Web 接口
ViewCVS (http://viewcvs.sourceforge.net/)
基于 Python 的 CGI 脚本,用来浏览 CVS 和 Subversion 仓库
WebSVN (http://websvn.tigris.org/)
基于 PHP 的 Subversion 第三方仓库浏览工具
Trac (http://projects.edgewall.com/trac)
基于 Web 的软件项目管理、漏洞跟踪、发布系统,使用版本控制系统接口,并且集成了 Wiki 支持
AnkhSVN (http://ankhsvn.tigris.org/)
微软 Visual Studio .NET 的 Subversion 插件
JSVN (http://jsvn.alternatecomputing.com/)
Java Subversion 客户端,包含一个 IDEA 的插件
psvn.el (http://xsteve.nit.at/prg/vc_svn/)
Emacs 的 Subversion 接口
RapidSVN (http://rapidsvn.tigris.org/)
基于 WxPython libraries 的跨平台的 Subversion 图形化客户端
Subclipse (http://subclipse.tigris.org/)
Eclipse 下的 Subversion 插件
Subway (http://nidaros.homedns.org/subway/)
Microsoft SCC provider for Subversion
sourcecross.org (http://www.sourcecross.org/)
Microsoft SCC provider for Subversion
Supervision (http://supervision.tigris.org/)
Subversion 的 Java/Swing 图形化客户端
Sven (http://www.nikwest.de/Software/#SvenOverview)
使用 Mac OS X Cocoa 框架开发的 Subversion 图形化客户端
Svn4Eclipse (http://svn4eclipse.tigris.org/)
为 Eclipse IDE 设计的 Subversion 插件
Svn-Up (http://svnup.tigris.org/)
基于 Java 的 Subversion 以及 IDEA IDE 的插件
TortoiseSVN (http://tortoisesvn.tigris.org/)
作为微软 Windows 外壳扩展设计的 Subversion 客户端
WorkBench (http://pysvn.tigris.org/)
在 Subversion 基础上构建的基于 Python 的跨平台软件设计环境
D.2 和语言的绑定
PySVN (http://pysvn.tigris.org/)
供 Python 使用的面对对象的 Subversion 客户端 API 项目
Subversion (http://subversion.tigris.org/)
供 Python、Perl、和 Java 使用的 Subversion API;对应于核心的 C API
SVNCPP (http://rapidsvn.tigris.org/)
供 C++ 的面对对象的 Subversion 客户端 API
D.3 仓库转换工具
cvs2svn (http://cvs2svn.tigris.org/)
从 CVS 到 Subversion 的转换
vss2svn (http://vss2svn.tigris.org/)
从 Microsoft SourceSafe 到 Subversion 的转换
Subversion VCP Plugin (http://svn.clkao.org/revml/branches/svn-perl/)
从 CVS 到 Subversion 转换的 VCP 插件
D.4 更高领域的一些工具
Kwiki (http://www.kwiki.org/)
带有 Subversion 备份支持的 Wiki
Scmbug (http://freshmeat.net/projects/scmbug/)
集成了漏洞跟踪的软件配置管理系统,支持 Subversion
Subissue (http://subissue.tigris.org/)
直接在 Subversion 仓库中跟踪发布
Subwiki (http://subwiki.tigris.org/)
使用 Subversion 作为数据仓库 的 Wiki
svk (http://svk.elixus.org/)
基于 Subversion 的分散式的 版本控制系统
submaster (http://www.rocklinux.org/submaster.html)
基于 Subversion 的分布式的软件开发系统
D.5 仓库浏览工具
SVN::Web (http://svn.elixus.org/repos/member/clkao/)
基于 Perl 的 Subversion 仓库 Web 接口
ViewCVS (http://viewcvs.sourceforge.net/)
基于 Python 的 CGI 脚本,用来浏览 CVS 和 Subversion 仓库
WebSVN (http://websvn.tigris.org/)
基于 PHP 的 Subversion 第三方仓库浏览工具
Trac (http://projects.edgewall.com/trac)
基于 Web 的软件项目管理、漏洞跟踪、发布系统,使用版本控制系统接口,并且集成了 Wiki 支持