SVN服务器与客户端配置与应用.docx
《SVN服务器与客户端配置与应用.docx》由会员分享,可在线阅读,更多相关《SVN服务器与客户端配置与应用.docx(14页珍藏版)》请在冰豆网上搜索。
SVN服务器与客户端配置与应用
SVN服务器与客户端配置与应用
简介:
什么是Subversion?
Subversion是一个自由/开源的版本控制系统。
也就是说,在Subversion管理下,文件和目录可以超越时空。
Subversion将文件存放在中心版本库里。
这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。
于是我们就可以籍此将数据回复到以前的版本,并可以查看数据的更改细节。
正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。
Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。
从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。
因为修改不再是单线进行(单线进行也就是必须一个一个进行),开发进度会进展迅速。
此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量—如果出现不正确的更改,只要撤销那一次更改操作即可。
某些版本控制系统本身也是软件配置管理(SCM)系统,这种系统经过精巧的设计,专门用来管理源代码树,并且具备许多与软件开发有关的特性—比如,对编程语言的支持,或者提供程序构建工具。
不过Subversion并不是这样的系统。
它是一个通用系统,可以管理任何类型的文件集。
对你来说,这些文件这可能是源程序—而对别人,则可能是一个货物清单或者是数字电影。
下载
官方下载:
服务器和程序下载:
http:
//subversion.tigris.org/getting.html#binary-packages
Windows常用客户端TortoiseSVN:
AnkhSVN(VisualStudio插件):
Subclipse(Eclipse插件):
http:
//subclipse.tigris.org/
SCPlugin(MacOSx客户端):
http:
//scplugin.tigris.org/
更多客户端和工具可以看下表或者到官方网站察看:
http:
//subversion.tigris.org/links.zh.html#clients
服务器端配置:
配置为以下几个部分,本次配置是在windows下使用的方式,以方便资源有限的项目使用。
在UNIX环境下,只是安装方式不同,命令执行并无太大区别。
注:
服务器端配置前,最好先将此机器的IP地址手动填写为固定IP地址!
●软件下载
●服务器和客户端安装
●建立版本库(Repository)
●配置用户和权限
●运行独立服务器
●初始化导入
●基本客户端操作
1,软件下载
下载Subversion服务器程序。
这里不过多赘述,注:
服务器端程序为Setup-Subversion-*.msi。
*号部分为版本号.
下载Subversion的Windows客户端TortoiseSVN。
TortoiseSVN是扩展WindowsShell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。
注:
客户端程序为TortoiseSVN-*-win32-svn-*.msi。
(64位系统请选择下载对应版本)
2,服务器和客户端安装
服务器安装,直接运行Setup-Subversion-*.msi,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。
(注:
在安装过程中请务必不要在安装目录中包含空格,例:
C:
\ProgramFiles\Subversion是错误的路径,”ProgramFiles”中包含了空格,这样可能会引起Subversion无法正常启动!
)
安装TortoiseSVN,同样直接运行TortoiseSVN-*-win32-svn-*.msi按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关!
这里是否需要看到效果,请自行选择是否需要重启.(注:
服务器端可选择性安装客户端程序,如无必要,可以选择不安装)
3,建立版本库(Repository)
运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:
svnadmincreateE:
\svndemo\repository就会在目录E:
\svndemo\repository下创建一个版本库。
我们也可以使用TortoiseSVN图形化的完成这一步:
在目录E:
\svndemo\repository下"右键->TortoiseSVN->CreateRepositoryhere...“,然后可以选择版本库模式,这里使用默认即可,然后就创建了一系列目录和文件。
4,配置用户和权限
来到E:
\svndemo\repository\conf目录,修改svnserve.conf:
该处为权限配置部分,可根据需求修改.
#[general]
#password-db=passwd
改为:
[general]
password-db=passwd
然后修改同目录的passwd文件,去掉下面三行的注释:
#[users]
#harry=harryssecret
#sally=sallyssecret
最后变成:
[users]
harry=harryssecret
sally=sallyssecret
在passwd文件中,“=”前的字符就是用户名,后面的就是密码。
还要注意“[users]”前面的注释“#”一定要删除掉。
5,运行独立服务器
方法一:
在任意目录下运行:
svnserve-d-rE:
\svndemo\repository我们的服务器程序就已经启动了。
注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。
方法二:
在windows下使用svnService安装svn服务,
1.将svnService.exe拷贝到svn的安装目录\bin下.
2.执行svnService-install即可.
比如,你的所有项目都在c:
\svnrepo下,你可以如下
安装时用SVNService-install-d-rc:
\svnrepo
更改时用SVNService-setup-d-rc:
\otherplace\svnrepo
如果访问其中的一个项目c:
\svnrepo\project1,可以指定路径svn:
//localhost/svnrepo/project1(注:
作为url时用/)
第一次安装完后要到服务中手动启动它,或者到服务中将它设为自动启动,让每次机器启动时自动启动这个服务。
注意:
>svn的安装目录不能有空格,否则会使创建服务失败,例安装在c:
\programfiles\subversion目录下,在创建windows服务时都会出错.
SVNService相关的命令:
可直接输入SVNService看到可使用的参数信息.
备注:
SVNService的主要功能就是安装/移除服务(通过APICreateService/DeleteService来实现的)
6,初始化导入
来到我们想要导入的项目根目录,在这个例子里是E:
\svndemo\initproject,目录下有一个readme.txt文件:
右键->TortoiseSVN->Import...
在URLofrepository输入“svn:
//localhost/trunk”在ImportMessage中输入你的日志信息,完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。
需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。
例如运行svnserve的主机的IP是192.168.0.1,则URL部分输入的内容就是“svn:
//192.168.0.1/trunk”。
(注:
导入与添加是两个不同的操作)
7,基本客户端操作
取出版本库到一个工作拷贝:
来到任意空目录下,在本例中E:
\svndemo\wc1,运行右键->Checkout,在URLofrepository中输入svn:
//localhost/trunk,这样我们就得到了一份工作拷贝。
URLofrepository:
是你需要导出的文件路径
Checkoutdirectory:
是你将要把文件导出的具体本地路径.
其他选项默认即可..
(注:
在另一台机器上同理,只不过需要填写URL地址)
添加操作:
该样式为在工作目录下新建的文件样式,显示为一个问号.
添加该文件需要点击TortoiseSVN>>Add…
然后提交即可
该文件就在工作目录上添加并且提交.
获取最新版本文件:
选择需要获得文件,选择SVNUpdate即可获取最新版本文件
修改操作:
该样式为文件被修改后的样式.
选择SVNCommit…提交即可
(注:
在提交过程中,可能会报错,或者禁止提交,该原因可能是人员A与人员B同时操作了该文件,造成了文件并发,或者是当人员A修改了该文件并提交后,人员B修改了该文件也需要提交时,该文件在人员B的版本低于服务器端得版本,所以禁止提交!
可以尝试如下处理方法:
将该文件获取为最新版本(SVNUpdate),然后打开该文件,文件中内容SVN已经帮助我们把本地版本与服务器端的版本不同处标注出来,做相应的修改后选择TortoiseSVN>>Revisiongraph然后在提交即可)
删除操作:
选择TorotiseSVN>>Delete删除该文件.
然后点击该文件空白处选择SVNCommit…提交
注:
点击空白处提交时是将整个文件夹内容全部提交,所以提交过程中需要选择需要提交的内容进行提交.且勿需要确证需要提交的内容后在提交,以免造成文件的提交给其他人员造成版本错误的结果!
如下图,选择需要提交的内容后再OK
同理该方法也适用于多文件提交,或者选择好需要提交的文件,选择SVNCommit…一起提交也可以.
该样式为该文件为本地的完整文件!
但并不代表这个文件是与服务器同步的最新版本.
察看所作的修改:
选择文件上右键->TortoiseSVN->ShowLog,这样我们就可以看到我们对这个文件所有的提交。
在版本1上右键->Comparewithworkingcopy,我们可以比较工作拷贝的文件和版本1的区别。
SVN库的目录结构详解
SVN库
┠tags(发布)
┃├1.1rc1
┃├1.2
┃├1.5
┃└1.9
┠trunk(主版本)
┃└project
┃├src
┃├classes
┃└WEB-INF
┖branches(分支)
└分支
主要的开发工作放在trunk,分支放在branches,发布版本放在tags。
存储库
trunk:
主版本
project:
项目文件,文档ER图用例图实体关系图等文档
src:
开发项目文件,程序文件
classes:
类文件,通用帮助类,例:
字符串处理通用类,通讯的通用类等,在多个项目中,可以重复利用的类文件或者解决方案
web-inf:
在WEB项目中,站点的配置信息等
branches:
分支版本(独立版本)例如历史版本v1.0/v2.0测试版本,分支A功能版本,分支B功能版本等!
tags:
标记版本,比如发行版v1.0/v2.0目前为止稳定的最可靠的版本,正在运行及适用的版本
注意事项:
开发人员每次修改,或者新增、删除、拷贝工作区对象后,应该立刻提交到版本库,有效保持工作区与资源库的高度一致.
开发人员在每次修改工作区中代码或者文档时,首先更新该对象,可以尽量减少冲突、合并.
保证提交到的版本库的代码没有BUG以免影响开发组,可以适当利用加锁机制,减少冲突.
切忌尽量不要提交整个工作文件夹,还有一些*.csproj的项目解决方案文件夹等会影响到整个项目的文件.