svn(subversion)的种类

windows、linux下的svn工具下载包
Apache Subversion Binary Packages
http://subversion.apache.org/packages.html

windows下tortoisesvn,是图形界面的svn。但是不支持命令行操作。

Windows下命令行工具:
发现原来安装的tortoisesvn已经集成到shell中,不能在命令行下使用。于是找到这个http://www.visualsvn.com/downloads/
下载Apache Subversion command line tools,这是一个可以在cmd下使用的命令行工具,解压后把里面bin目录这个路径添加到环境变量的path,这样在cmd下就可以使用了,和linux下使用svn的习惯一样了。


Subversion Tools(几种Subversion工具的安装使用)
0.关于Subversion
Subversion具有以下的特点:
几乎所有的CVS特点-Subversion的初衷就是开发一个更好的CVS。
目录和文件都被版本化。
拷贝、删除操作被版本化。
灵活的版本化metadata。
commit原子化。
Branching和tagging简单易用。
整合tracking。
文件locking。
符号链接可以被版本化。
Apache网络服务器选项,通过WebDAV/DeltaV协议。
独立的服务器选项-svnserve。
可转换的输出。
本地化消息。
可交互的冲突解决方案。
Repository只读映射。
….
关于更详细的信息,请参考:http://subversion.tigris.org/features.html
关于Subversion的FAQ列表,中文翻译小组进行了翻译,请参考http://subversion.tigris.org/faq.zh.html。感谢中文翻译小组所作出的贡献。

一个典型的Subversion工作流程如下(摘自Subversion中文帮助):
典型的工作周期是这样的:
更新你的工作拷贝
svn update
做出修改
svn add
svn delete
svn copy
svn move
检验修改
svn status
svn diff
可能会取消一些修改
svn revert
解决冲突(合并别人的修改)
svn update
svn resolved
提交你的修改
svn commit

SVN的命令集如下:
add
blame (praise, annotate, ann)
cat
checkout (co)
cleanup
commit (ci)
copy (cp)
delete (del, remove, rm)
diff (di)
export
help (?, h)
import
info
list (ls)
lock
log
merge
mkdir
move (mv, rename, ren)
propdel (pdel, pd)
propedit (pedit, pe)
propget (pget, pg)
proplist (plist, pl)
propset (pset, ps)
resolved
revert
status (stat, st)
switch (sw)
unlock
update (up)
可以使用svn help或者svn help subcommand(例如svn help checkout)来获取帮助。

一般来说,使用图形化的GUI来作为Subversion的客户端使得操作更加的简单易用,注入Toitorse SVN或者CollabNet的Subversion客户端工具,如果使用集成开发环境,例如Eclipse,MS Visual Studio,NetBeans等,都会具有对应的Subversion Plugin的支持,以去除手动使用SVN客户端命令的繁琐操作,另外使用命令行工具的一个缺点就是进行同步(diff)命令时,显示的格式不够用户友好(与集成IDE的插件相比)。
所以本文主要介绍服务器端的版本库的搭建与设置,而不涉及客户端的使用(命令行或者IDE客户端)

1.Subversion工具种类
如果仅仅需要安装一个版本库,那么只需要构建一个Subversion客户端,客户端可以是命令行客户端,也可以是GUI客户端。
如果需要一个网络的版本库,那么需要安装Apache2服务器或者一个svnserve服务器。
相对于win32的发布包,Subversion更多的应用于*nix服务器,毕竟就稳定性可安全性而言,*nix系列服务器要优于windows服务器(笔者个人认为)。
可以在如下链接:http://subversion.tigris.org/getting.html获取各个操作系统的Subversion工具。
本文中的操作系统平台为Win32。
接下来笔者将根据以下几种方式搭建SVN网络服务器。
a.Tigris.org : svn-win32-1.5.5 + Apache 2.2.11
http://subversion.tigris.org/files/documents/15/44589/svn-win32-1.5.5
http://labs.xiaonei.com/apache-mirror/httpd/binaries/win32/apache_2.2.11-win32-x86-openssl-0.9.8i.msi

b.CollabNet (Certified binaries)
CollabNetSubversion-server-1.5.5-1
http://downloads-guests.open.collab.net/files/documents/61/1373/CollabNetSubversion-server-1.5.5-1.win32.exe

c.VisualSVN (VisualSVN Server)
VisualSVN-Server-1.6.3
http://www.visualsvn.com/files/VisualSVN-Server-1.6.3.msi
(基于Subversion1.5.5版本构建)

d.SlikSVN
SlikSVN1.5.6
http://www.sliksvn.com/pub/Slik-Subversion-1.5.6-win32.msi

上述软件均为开源软件。其中CollabNet公司对开发Subversion的部分全职工作人员提供薪水,并且拥有部分Subversion代码的版权,但是该版权是BSD/Apahce风格的版权,即可以随心所欲的去下载,修改,或者重新发布新的版本,而不需要经过CollabNet公司或者其他任何一个人的许可。

FAQ:我现在所运行的是Apache 1.x,但是我不能仅仅为了支持Subversion版本库而将其转换成Apache 2.0。这是否意味着我不能使用Subversion服务器?

不必,你可以用svnserve作为Subversion的服务器,它可以很好的工作。

在使用Apache server时,如果你想使用分布式创作和版本管理协议(WebDAV)和所有其他一些好的功能特性,那么是的,你需要Apache 2.0。但是不管怎样,当你继续在80端口运行Apache1.0的时候,你总是可以在另外一个不同的端口运行Apache2.0。不同版本的 Apache可以在同一台机器上很好的和平相处。仅仅需要在改变httpd.conf文件中把Listen指令从80改成8080,或者其他你想要改成的端口。然后确保在你公布版本库的URL的时候加以说明:(例如,http://svn.mydomain.com:8080/repos/blah/trunk/)。

2.Subversion Win32 + Apache 2.11
a.安装SVN:将Subversion Win32解压缩到本地目录,Subversion的安装路径为 SVNHOMEF:/svnwin321.5.5使 SVN_HOME表示SVN的安装目录。
b.安装Apache HTTP服务器:执行安装程序,安装路径为 HTTPDHOMEF:/apache2.2使 HTTPD_HOME表示Apache HTTP服务器的安装目录。
注:Apache HTTP服务器默认使用80端口,如果80端口已经被占用,请修改$HTTPD_HOME/conf/httpd.conf文件,将Listen 80修改为其他的端口。例如8080,9080等。
安装完成后,默认会启动apache服务器,当任务栏图标状态为绿色的三角时,表示启动正常。
也可以通过在浏览器中输入http://localhost:port/来进行测试。(默认情况下会打印It Works。)

c.创建版本库并测试
安装完Subversion Win32和Apache HTTP服务器之后,就是进行配置的工作了。
首先在配置$HTTPD_HOME/conf/httpd.conf文件:
使用LoadModule来加载mod_dav_svn模块,这个指示必须先与其它Subversion相关的其它配置出现,如果你的Apache使用缺省布局安装,你的mod_dav_svn模块一定在Apache安装目录的modules子目录,LoadModule指示的语法很简单,影射一个名字到它的共享库的物理位置:
LoadModule dav_svn_module modules/mod_dav_svn.so
注意,如果mod_dav是作为共享对象编译(而不是静态链接到httpd程序),你需要为它使用LoadModule语句,一定确定它在mod_dav_svn之前:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so

SVNHOME/bin/moddavsvn.so HTTPD_HOME/modules目录下。

在你的配置文件后面的位置,你需要告诉Apache你在什么地方保存Subversion版本库(也许是多个),位置指示有一个很像XML的符号,开始于一个开始标签,以一个结束标签结束,配合中间许多的其它配置。Location指示的目的是告诉Apache在特定的URL以及子URL下需要特殊的处理,如果是为Subversion准备的,你希望可以通过告诉Apache特定 URL是指向版本化的资源,从而把支持转交给DAV层,你可以告诉Apache将所有路径部分(URL中服务器名称和端口之后的部分)以/repos/开头的URL交由DAV服务提供者处理。一个DAV服务提供者的版本库位于/absolute/path/to/repository,可以使用如下的httpd.conf语法:

password-db = passwd

将注释用的#号去掉。
c.设置用户和密码
使用文本编辑器编辑passwd文件F:/svn_collabnet_svnserve/my-first-database/,创建用户和密码。
joe = super-secret
可以添加任意个用户。
d.取消防火墙限制
在启动服务之前,确保防火墙没有阻止该端口的使用。
可以在下面的链接中查看相关的设置方法:
http://www.microsoft.com/windowsxp/using/security/internet/sp2_wfexceptions.mspx
svnserve.exe是程序名称,端口号默认为3690。
注:如果没有设置防火墙,那么在下一步中启动服务器时,windows也会弹出提示框,确认是否解除阻止。
e.启动服务
如果选择了将svnserve作为系统服务,那么可以使用
net start svnserve
来启动服务,否则的话,可以使用
svnserve -d -r F:/svn_collabnet_svnserve
来启动服务。
f.设置权限
可以给匿名用户设置访问(读/写)权限。
修改F:/svn_collabnet_svnserve/my-first-database/svnserve.conf文件,通过设置
anon-access = write
anon-access = read
anon-access = none
来为匿名用户设置写权限,读权限和无权限。
g.检出项目
svn co svn://localhost/repository_name
例如
svn co svn://localhost/my-first-repos

使用Apache服务器的配置方式与Apache + SVN win32的方式类似,只是CollabNet已经添加好了LoadModule以及SVNParentPath的设置。
只需要添加

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值