??xml version="1.0" encoding="utf-8" standalone="yes"?>
以前使用官方Subversion搭徏SVN版本控制环境Q感觉很J琐Q需要手动该文gQ很ȝQ今天在|上看到了VisualSVN搭徏版本控制环境的方法,写出来和大家分n一下。欢q提出问题O(∩_∩)O~
1、下载安装文Ӟ服务器端和客LQ?/p>
服务器端采用VisualSVNQ一个可用的下蝲地址是:http://idc218b.newhua.com/down/VisualSVN-Server-2.1.2.zipQ如果链接失效,从百度谷歌搜索就可以了,很多下蝲地址?/p>
客户端采用大家熟悉的TortoisesvnQ没错,是那个乌龟,官方下蝲地址是:http://tortoisesvn.net/
服务器端用来存放提交的文Ӟ客户端用来连接服务器端,提交和下载服务器端的文gQ(q个不用我多说了吧,下一话题^_^Q?/p>
2、安装服务器端,解压~下载的文gVisualSVN-Server-2.1.2.zipQ双击VisualSVN-Server-2.1.2.msiq行安装
安装q程中有一个界面是选择安装的组Ӟ选择W一?#8220;VisualSVN Server and Management Console”可以了。如?/p>
下一个界面的讄如图Q?/p>
可以更改目录Q也可以更改端口Q注意,端口不要和已l用的端口冲突Q去?#8220;use secure connnection https://”的选项
q里的C:/Repositories是服务器文档目录Q也是我们提交到SVN里的文档的存攄录,q个目录大家可以更改
点击下一步,默认安装完成卛_?/p>
3、安装客L软gTortoiseSVN-1.5.3.13783-win32-svn-1.5.2.msiQ双击默认安装就可以了,安装完成可能要重启,重启卛_?/p>
4、配|服务器?/p>
点击开?->E序->VisualSVN-->VisuaSVN Server Manager启动服务器管理器Q右键选择VisualSVN Server(Local)Q选择PropertiesQ在弹出H口中选择NetWork标签Q在ServerName处输入本机的IP地址Q我的地址?192.168.158.129Q端口我选择8080.Q确定保存,再点击VisualSVN Server可以看到右面的界面,我们的访问地址是Sever URL http://192.168.158.129:8080/svn/
现在我们新徏两个目录Q右键选择RepositoriesQ选择Create new RepositoryQ输入名字documentQ保?/p>
新徏用户Q右键选择 UsersQ选择Create UserQ输入用户密码test,testQ这个口令将在客Lq接SVN服务器时使用
为刚才创建的document Repositoryd用户Q右键选择documentQ选择PropertiesQ点击Add按钮Q选择刚才d的用P保存Q如?/p>
q样Q服务器端就配置好了Q回到客L
因ؓ已经安装了客L软gTortoisesvnQ在D盘下Q新建文件夹testsvnQ打开文g夹,右键选择check out(?Q?/p>
在弹出窗口的版本库URL处输入,http://192.168.158.129:8080/svn/document
如图
定Q保存。注意上面的目录是D:/testsvnQ?/p>
在testsvn中新Z个文本文档,新徏文本文档.txtQ在testsvnI白处,点击右键Q选择提交Q(commitQ,则文件会被传到文档服务器Q其他h可以下载了?/p>
W三Ҏ供了各种囑Ş界面的客L工具Q比如eclipse插gsubclipseQwindows囑Ş界面工具tortoiseSVN。这些后面会提到它们的基本用?/p>
有关subversion和subclise的安装暂略,因ؓ目前提供的虚拟机开发环境已l安装和配置?/p>
tortoiseSVNQ可到官方网站上下蝲最新版本的windows安装包,默认安装Q不需要做其他讄Q安装后需要重启计机。能在资源管理器中鼠标右键菜单看到如下图所C条目,p明安装成功?/p>
日常工作中用subversion仅仅是几个命令或者操作,q不复杂。但是它内部的一些机刉要逐渐ȝ解?/p>
在刚开始进入一个开发队伍的时候,已经有版本控制和软g目Q用的W一个命令往往是检出(checkoutQ代码。或者当使用和研I开源Y件的时候,也是W一个要用到q个命o。这个命令的作用是把目的源代码下蝲到用h圎ͼq且带有版本控制信息?/p>
比如Q执行以下命令获取一个项目的源代码:
q个命o在本地当前目录建vfs.demo目录q将该服务器目录下的所有文件下载到本地Qƈ且,会生成隐藏文?SVN目录Q用于记录版本控制信息?/p>
tortoiseSVN有图形界面的出操作,但是命o行方便快P使用命o行?/p>
如果使用eclipseq安装了subclipse插gQ可以通过插g导入目?/p>
然后Q?/p>
选择或者新源库位置Q?/p>
选择资源库中的项目目录?/p>
然后Q就可以完成QfinishQ了?/p>
何时使用初始导入Q比如,对于java开发h员来_在eclipse中编写了一个项目,q决定把目׃n到版本控制器上,q时需要初始导入操作了?/p>
以下以subclipseZ说明初始导入的步骤?/p>
W一步,选择share projectQ共享你的项目:
选择通过svn׃n目Q?/p>
填写svn提交的urlQ?/p>
q个urlQ需要subversion的管理员告知你,q有用户名和密码。如果想l习一下,google提供了免费的svnQ你可以通过Q?a >http://code.google.com 甌目Q这样就会有cM我上面的url和权限?/p>
然后可以直接点击finishQ完成初始提交。选择nextQ可以做定制模块名和初始提交的信息,一般不需要?/p>
如果你的svn服务器用了https协议Q需要接受一个数字证书,一般选择怹接受?/p>
之后Q会要求输入用户名和密码。徏议勾选保存密码,否则会很ȝ?/p>
q样Q再看项目,会发现条目上多了问号Q这旉要选择哪些目录和文仉要提交,哪些需要忽略,比如生成的class文g{?/p>
选择需要忽略的文g或者目录,q时需要切换到D视图下才能看到所有文件和目录Q?/p>
从导航视囄到的情况Q?/p>
选中需要忽略的目录和文Ӟ操作svnQ?/p>
然后提交整个目卛_。有x交的操作见下文?/p>
目在提交前Q应该先做更新项目操作。比如有一个文件a.txtQ已l提交到svn中,q样Q可能有其他用户提交了新的改动到a.txtQ你现在?修改了a.txtQ准备提交你的改动。先操作更新a.txtQ这样如果该文g在svn服务器已l改动,会将改动加入到当前本地的a.txt中?/p>
在subclipse中的操作Q?/p>
提交代码Q一般会U联当前目录下所有改动的内容?/p>
对于不再使用的代码,可以直接删除掉,比如通过windows删除文gQ通过ubuntu的rm命o或者通过eclipse的delete功能Q然后提交项目,subclipse会知道哪个文件被删除了,q将q个变化通知lsvn服务器?/p>
如果代码做了改动Q可以是多个文gQ也可以删除了文件或者新增了文gQ但是没有提交到svn服务器,可以通过q原功能恢复到改动前的样子?/p>
版本的分支和合ƈQ是版本控制的核心功能?/p>
比如QY仉过版本的分支,项目分配给多h做分工开发,通过版本合ƈQ将q些分工实现的代码合q到新的版本中;或者,修改代码bug的时候,可以 先打Z个版本分支,保留出现bug的版本,比如分支版本名称为pre_fix_bug_2201Q这?201表示bug的代P然后针对q个分支做修 改fixq个bugQ再修改后的内Ҏ交到一个新的分支版本,比如post_fix_bug_2201Q再到适当时候将q个分支合ƈC码主q中厅R?/p>
以上说了一下版本分支与合ƈ的用途,q里单说一下svn版本分支合ƈ的基本原理?/p>
首先是版本分支,实际上是当前版?#8220;copy”到分支上Q非常类似windows下,某个目录的快捷方式复制到其他\径。这UcopyQ可以说 是轻量copy或者叫廉hcopyQ不是复制版本内容,而是做一个内部的引用。这Lcopy很快Q对服务器也没有I间上的开销?/p>
版本的合qӞ是svn开发中的难点,当做版本合ƈ的时候,服务器会试图的合q同一个文件的不同版本Q可能会带来版本冲突Q这需要操作者做手工的处理,消除版本冲突。合理分工的目应该可以通过理手段量避免q种情况?/p>
以下是通过subclipse演示版本分支的操作。首先,目文档应该已经全部提交Q然后,选择
然后Q填写urlQ一般是在tags/目录下:
然后默认选项Qnext卛_Q然后选择finish按钮。在svn的相应\径下׃有一个同名的目?/p>
打分支,实际上就是徏立了一个项目的轻量Ucopy?/p>
如何从版本的一个分支切换到另外一个分支,q也是很重要的,它能帮助你轻村֜不同的项目版本中自动切换Q而不必在eclipse里维持多个项目?/p>
选择要切换的目版本路径Q或者直接输入亦可?/p>
然后点击ok后,目卛_切换到该版本下?/p>
在分支上做了改动Qƈ且已l提交(一般tags目录下的目U定是只ȝQ不改动Q这里是Z举例方便Q,那么Q可以将q个版本合ƈ到trunkQ主qԌ代码中,让主q也拥有最新的代码?/p>
选择需要合q的源,比如从tags上面一个版本,合ƈCqԌtrunkQ代码中?/p>
之后Q需要设|一些合q的Ҏ,q里默认配置卛_?/p>
执行完毕后,会有一个合q报告,可见没有出现冲突情况?/p>
q时候看源代码,可以发现有改动,q些改动是合ƈq来的代码?/p>
改动如果没有问题Q就可以提交Q这样就完成了一ơ版本的合ƈ工作?/p>
如果文档没有提交Q还原是很容易的Q只需执行q原QrevertQ就可以了。有时候,已经提交了代码,l果发现了问题,需要回退C前提交的版本Q就不是很容易了?/p>
q时候的q原Q其实是以前的某个修订本(revisionQ覆盖当前的本地工作拯。然后再提交q些改动Q成为新的修订本?/p>
下面演示一下?/p>
首先提交了一个版本的改动Q这是以后需要还原回来,q里Qؓ了以后还原方便,要在提交的消息中说明改动了什么。(q一步在开发中是必ȝQ是U律Q?/p>
下面Q再修改一下项目,然后提交一ơ,q里故意增加一个文件?/p>
提交以后Q后悔了Q想恢复到前一个修订版。虽然可以通过版本可行覆盖还原,但是一般h是无法记忆这个版本号的,另外是实际情况往往更复杂,不会像示例中那样是相ȝ两个修订版?/p>
所以提交修订版时的注解消息显得特别重要?/p>
q时可以通过svn的日志功能查看到q些版本和它们的注释消息?/p>
看到历次版本的消息内宏V?/p>
q样Q根据注释,我们很容易找到需要还原到以前的那个修订版。如果不攑ֿQ我们还可以Ҏ上下文菜单,Ҏ两个修订版的区别?/p>
看比较结果。可以看出,增加了一个文Ӟ另外一个文件中有一处差异?/p>
那么Q可以确定是?25修订版恢复(q原Q?/p>
更改后的目Q相当于?25修订版还原了126修订版?/p>
可以看到126版本d的文件不见了Q另外VfsDemo.java文g也还原到125版本的内宏V这时提交将成ؓ127版本Q这个版本其实就?25版本。算是还原了dQtrunkQ上的代码?/p>
h历史Q可以看C订版已经生效?/p>
Windows下安装SVNQSubversionQ独立服务器步骤Q?/p>
安装之前需要准备的软gQ?/p>
1、Setup-Subversion-1.7.0.msi
2、TortoiseSVN-1.7.0.22068-win32-svn-1.7.0.msi
3、LanguagePack_1.7.0.22068-win32-zh_CN.msi
下蝲地址Q?/p>
1?a >http://sourceforge.net/projects/win32svn/files/
2?a >http://sourceforge.net/projects/tortoisesvn/files/
安装步骤及简要配|:
1、安装Setup-Subversion-1.7.0.msi
2、安装TortoiseSVN-1.7.0.22068-win32-svn-1.7.0.msi
3、安装LanguagePack_1.7.0.22068-win32-zh_CN.msi4、添加subversion环境变量Q?span style="color: #ff0000">c:\program files\subversion\bin
5、创建版本库Q?br />a?span style="color: #ff0000">svnadmin create c:\svn\repository
b、创建空目录repository->右键->TortoiseSVN->Create Repository here...6、配|用户和认证Q?br /> Svnserve.conf:核心配置文gQ?br /> # password-db = passwd >password-db = passwd
# authz-db = authz >authz-db = authz
Authz:配置用户权限的文?br /> Passwd:新加用户名和密码的文?/p>启动subversion:
在dos命o下,输入Q?gt; svnserve exe -d -r d:\svn_repo(q行自己加的)
7、运行SubversionQc:\svn\repository>svnserve --daemon
或者:c:\svn\repository>svnserve --daemon --root c:\svn
注:q行的时候不能关闭命令行H口Q关闭服务就退ZQ因此可以添加到pȝ服务w机启动即可!8、添加系l服务,随系l启动:
sc create svnservice binpath= "c:\program files\subversion\bin\svnserve.exe --service --root c:\svn" displayname= "Subversion" depend= tcpip start= auto9、删除服务:
sc delete svnservice
注:在Windows XP SP3下测试通过Q其他^台暂未测试!