SVN安装配置和使用
1. SVN简介
Subversion是新一代的版本控制工具,不仅仅应用于程序源代码管理,也可以广泛应用于其他需要协作管理数据的工作。Subversion 作为CVS 的重写版和改进版,其目标就是作为一个更好的版本控制软件,取代目前流行的CVS。Subversion 的主要开发人员都是业界知名的CVS 专家。Subversion支持绝大部分的CVS 功能/命令;Subversion 的命令风格和界面也与CVS 非常接近。当然,不同的地方正是对CVS 的改进。主要体现在:全局性的版本编号、目录的版本控制、原子性提交、支持变更集概念。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
2. SVN安装及配置
2.1. 软件下载
2.1.1. 服务端软件
l httpd-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.2.10</chsdate>.tar.gz
下载地址:http://httpd.apache.org/
Subversion有两种运行方式,一种是基于Apache Http Server,另外一种是Subversion Standalone Server。使用较多的是基于Apache下的svn的配置。
l subversion-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.4</chsdate>.tar.gz
下载地址:http://subversion.tigris.org/downloads/subversion-1.4.5.tar.gz
Subversion服务端软件。
2.1.2. 客户端软件
l TortoiseSVN-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.3</chsdate>.13783-win32-svn-1.5.2.msi
l LanguagePack_<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.3</chsdate>.13783-win32-zh_CN.msi
下载地址:http://tortoisesvn.tigris.org/
较为常用的一种SVN Windows客户端管理软件,LanguagePack为中文包。
l site-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.4.6</chsdate>.zip
下载地址:http://subclipse.tigris.org/
subclipse,SVN在Eclipse下的一种插件。
l VisualSVN-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.2</chsdate>.msi
下载地址:http://www.visualsvn.com/visualsvn/download/
SVN在VS.net下的一种插件。
l svn-importer-1.1-M8.zip
下载地址:http://www.polarion.org/index.php?page=overview&project=svnimporter
CVS、VSS切换到SVN的工具。
以上服务端和客户端软件已经下载,保存在Sofe目录下。其它工具下载可参考网站http://subversion.tigris.org/
2.2. 安装Apache
1) 解压apache安装包
tar xvzf httpd-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.2.10</chsdate>.tar.gz
2) 进入解压后的目录
cd httpd-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.2.10</chsdate>
3) 配置apache安装
./configure --prefix=/usr/local/apache --enable-mods-shared=all
将apache安装在/usr/local/apache目录下。
4) 编译
make
5) 安装
make install
6) 验证安装是否成功
切换到apache的bin目录
cd /usr/local/apache/bin
启动apache服务
./apachectl start
打开浏览器http://10.192.77.222/ (根据实际IP)如果有测试页"It works!"出现则证明已经安装成功。
2.3. 安装Subversion
1) 解压SubVersion安装包
tar xvzf subversion-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.4</chsdate>.tar.gz
2) 进入解压后的目录
cd subversion-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.4</chsdate>
3) 配置subversion安装
./configure --with-apxs=/usr/local/apache/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache --with-apr-util=/usr/local/apache
4) 编译
make
5) 安装
make install
6) 创建库文件所在的目录
SubVersion安装完成后,创建库文件所在目录,相当于SubVersion的存储目录,路径可根据实际计划指定。
mkdir /web/svn
7) 创建仓库project
cd /usr/local/subversion/bin
./svnadmin create /web/svn/project
完成后切换到/web/svn/project,看看是不是多了些文件,如果是则说明Subversion安装成功了
2.4. 修改Apache配置文件
1) 打开配置文件
vi /usr/local/apache/conf/httpd.conf
2) 在LoadModule模块添加
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
如果modules目录下不存在以上两个so文件,需要手工拷贝。
3) 在配置文件最后添加
<Location /svn>
DAV svn
SVNParentPath /web/svn
AuthzSVNAccessFile /web/svn/authz.conf
AuthType Basic
AuthName "Subversion"
AuthUserFile /web/svn/authfile
Require valid-user
</Location>
SVNParentPath表示svn的父目录
AuthType表示连接类型
AuthName表示连接框显示的信息
AuthzSVNAccessFile表示权限配置文件路径
AuthUserFile表示用户配置文件路径
Require valid-user表示采用用户名密码方式认证
2.5. 权限管理
2.5.1. 增加用户
使用apache的htpasswd命令增加用户,默认采用MD5方式加密
cd /usr/local/apache/bin
增加test用户,系统会要求输入密码和确认密码。第一次增加用户,创建authfile时,使用-c选项,继续添加用户时,不可再使用。
./htpasswd -c /web/svn/authfile test
依次添加其它用户(根据需求),为显示权限分配,本例添加以下用户:wdwu, tyang, yfpeng, ljyan, xsli, hgao
./htpasswd /web/svn/authfile wdwu
……
2.5.2. 权限分配
创建/web/svn/authz.conf文件,进行权限管理。示例内容如下:
[groups]
g_admin = wdwu
g_vip = tyang
g_jhtpay = tyang,ljyan,yfpeng
g_odsb = xsli,hgao,yfpeng
[/]
@g_admin = r
[project:/]
@g_admin = rw
@g_vip = r
[project:/jhtpay]
@g_jhtpay = rw
[project:/odsb]
@g_odsb = rw
groups用来定义用户组,如g_admin = wdwu,组名为g_admin,组成员为wdwu。
一个用户可以同时属于多个组。
[/]
@g_admin = r
表示g_admin组对根目录有读权限,注意组前要加@符号。
[project:/]
@g_admin = rw
@g_vip = r
表示g_admin对project库根目录具有读写权限,g_vip组具有读权限。
[project:/jhtpay]
@g_jhtpay = rw
表示g_jhtpay组对project下的子目录jhtpay具有读写权限。
[project:/odsb]
@g_odsb = rw
表示g_odsb组对project下的子目录odsb具有读写权限。
通过以上配置,管理员对所有目录具有读写权限,项目组成员对本项目具有读写权限,不能访问其它项目内容。
2.6. 验证
重启apache服务,通过客户端工具,使用不同用户登录,对目录进行操作,验证权限设置。
3. Windows客户端TortoiseSVN使用
3.1. 安装
安装TortoiseSVN和中文包
TortoiseSVN-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.3</chsdate>.13783-win32-svn-1.5.2.msi
LanguagePack_<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.5.3</chsdate>.13783-win32-zh_CN.msi
TortoiseSVN会将资源管理器进行扩展,在右键菜单中添加子菜单,提供svn的功能。
3.2. 图标说明
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" stroked="f" filled="f" path="[email protected]@[email protected]@[email protected]@[email protected]@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1026" style="WIDTH: 337.5pt; HEIGHT: 155.25pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cyfpeng%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png"></imagedata></shape>
normal
一个新checkout的工作副本使用绿色的对勾做重载。表示Subversion 状态正常。
modified
在你开始编辑一个文件后,状态就变成了已修改,而图标重载变成了红色感叹号。通过这种方
式,你可以很容易地看出哪些文件从你上次更新工作副本后被修改过,需要被提交。
conflicted
如果在更新的过程中出现了冲突,图标会变成黄色感叹号。
readonly
如果你给一个文件设置了svn:needs-lock属性,Subversion 会让此文件只读,直到你获得文件
锁。具有这个重载图标的文件来表示你必须在编辑之前先得到锁。
locked
如果你拥有了一个文件的锁,并且Subversion 状态是正常,这个重载图标就提醒你如果不使
用该文件的话应该释放锁,允许别人提交对该文件的修改。
deleted
这个图标表示当前文件夹下的某些文件或文件夹已经被调度从版本控制中删除,或是该文件夹
下某个受版本控制的文件丢失了。
added
加号告诉你有一个文件或目录已经被调度加入版本控制。
ignored
忽略
non-version
没有纳入版本管理的文件
3.3. 常用功能
<shape id="_x0000_i1027" style="WIDTH: 279pt; HEIGHT: 369.75pt" type="#_x0000_t75"><imagedata o:title="svn" src="file:///C:%5CDOCUME~1%5Cyfpeng%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.jpg"><font color="#000000" size="5"></font></imagedata></shape>
SVN更新:将服务上的变化更新到本地
SVN提交:将本地的变化提交到服务器
SVN还原:取消本地的修改,将服务器文件覆盖本地文件。
检查更新:对比服务器端和本地文件的变化。
更新至版本:将服务器的某个版本更新到本地,最常用的是获取最新版本。
版本库浏览器:以资源管理器方式对服务器文件进行管理。
获取锁定:锁定某个文件,使他人在解锁之前不能更改对应服务器文件。
解除锁定:解除对文件的锁定,使他人可以更改对应服务器文件。
4. MyEclipse插件subclipse使用
4.1. 安装
将site-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.4.6</chsdate>.zip解压的内容拷贝到MyEclipse 6.0\eclipse目录,启动MyEclipse即完成对插件的安装。
4.2. 使用
添加项目到SVN:
<shape id="_x0000_i1028" style="WIDTH: 351pt; HEIGHT: 256.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cyfpeng%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image004.png"><font color="#000000" size="3"></font></imagedata></shape>
从SVN导入项目
<shape id="_x0000_i1029" style="WIDTH: 333pt; HEIGHT: 321pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cyfpeng%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image006.png"><font color="#000000" size="3"></font></imagedata></shape>
用法和CVS相似,不再累述。
5. VS.net插件visualsvn使用
安装visualsvn完成后,启动vs.net环境,在菜单中添加了VisualSVN菜单,提供版本管理功能。
<shape id="_x0000_i1030" style="WIDTH: 414.75pt; HEIGHT: 311.25pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cyfpeng%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image008.png"><font color="#000000" size="3"></font></imagedata></shape>
6. CVS迁移到SVN
迁移工作分为二步,先利用svn-importer工具将CVS中的项目导出为dump文件;然后利用SVN的svnadmin load命令将dump文件导入SVN。svn-importer导出需要花费较长的时间。具体操作步骤如下:
1) 将svn-importer-1.1-M8.zip解压。
2) 修改svn-importer配置文件。
svn-importer目录下已经存在默认配置文件config.properties,只需要复制一份修改部分参数即可。此处复制一份为config1.properties
srcprovider=cvs
设置从哪个vcs库导出,可选的值有cvs,cvsrcs,pvcs,mks,cc,vss,st,此处选择cvs。
import_dump_into_svn=no
设置导出dump后是否直接导入svn,因为我们分步做,所以此处选择no。
full.dump.file=full_dump_%date%.txt
incr.dump.file=incr_dump_%date%.txt
incr.history.file=incr_history.txt
list.files.to=files_%date%.txt
设置导出dump文件的路径和文件名。full代表全量导出,incr代表增量导出。此处使用默认值即可。
dump.file.sizelimit.mb=0
设置导出dump文件的大小限制,此处设置为0,代表不限制大小。
cvs.class=org.polarion.svnimporter.cvsprovider.CvsProvider
cvs.username=tyang_jhtpay
cvs.password=uiopjkl
cvs.hostname=10.192.77.8
cvs.repository=/src/master
设置cvs信息,cvs.class使用默认值,cvs.username,cvs.password分别为登录cvs服务器的用户名密码,注意用户要有读写权限。cvs.hostname为cvs服务器地址,cvs.repository 为cvs仓库位置,对我们的cvs服务器设置为/src/master。
cvs.modulename=project/jhtpay
要导出的cvs项目,以金汇通为例设置为project/jhtpay。
3) 导出dump文件
在命令行下转到svn-importer目录,运行run.bat full config1.properties
full代表全量导出,config1.properties为配置文件的名称。
4) 将dump文件导入svn
将导出的cvs项目dump文件full_dump_20081127_183755.txt传送到svn服务器,此处上传到了svn的bin目录。运行导入命令:
./svnadmin load /web/svn/project<full_dump_20081127_183755.txt
将jhtpay项目导入project库文件,导入完成后,会在project根目录下建立trunk,branches,tags目录。利用客户端工具建立jhtpay目录,将上述三个目录移动到jhtpay下,然后再按照设计的目录结构进一步调整。
按上述步骤对其它项目进行迁移即可,完成后对用户和权限根据项目进行配置。
7. VSS迁移到SVN
新建配置文件config2.properties,修改如下:
srcprovider=vss
vss.class=org.polarion.svnimporter.vssprovider.VssProvider
vss.executable=d:\\Program Files\\Microsoft Visual Studio\\VSS\\win32\\ss.exe