﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-gdufo-随笔分类-SVN等版本控制器</title><link>http://www.blogjava.net/gdufo/category/51566.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 17 May 2012 20:58:24 GMT</lastBuildDate><pubDate>Thu, 17 May 2012 20:58:24 GMT</pubDate><ttl>60</ttl><item><title>VisualSVN 管理</title><link>http://www.blogjava.net/gdufo/archive/2012/05/17/378408.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Thu, 17 May 2012 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/05/17/378408.html</guid><description><![CDATA[<div><p><div><a href="http://blog.csdn.net/happyjiang2009/article/details/5719988">http://blog.csdn.net/happyjiang2009/article/details/5719988</a></div><br /></p><p>以前使用官方Subversion搭建SVN版本控制环境，感觉很繁琐，需要手动该文件，很麻烦，今天在网上看到了VisualSVN搭建版本控制环境的方法，写出来和大家分享一下。欢迎提出问题O(&#8745;_&#8745;)O~</p> <p>1、下载安装文件（服务器端和客户端）</p> <p>服务器端采用VisualSVN，一个可用的下载地址是：http://idc218b.newhua.com/down/VisualSVN-Server-2.1.2.zip，如果链接失效，从百度谷歌搜索就可以了，很多下载地址。</p> <p>客户端采用大家熟悉的Tortoisesvn，没错，就是那个小乌龟，官方下载地址是：http://tortoisesvn.net/</p> <p>服务器端用来存放提交的文件，客户端用来连接服务器端，提交和下载服务器端的文件，（这个不用我多说了吧，下一话题^_^）</p> <p>2、安装服务器端，解压缩下载的文件<a href="http://idc218b.newhua.com/down/VisualSVN-Server-2.1.2.zip">VisualSVN-Server-2.1.2.zip</a>，双击VisualSVN-Server-2.1.2.msi进行安装</p> <p>安装过程中有一个界面是选择安装的组件，选择第一个&#8220;VisualSVN Server and Management Console&#8221;就可以了。如图</p> <p><img src="http://hi.csdn.net/attachment/201006/20/3441918_1277037648Md96.jpg" alt="" height="386" width="500" /></p> <p>下一个界面的设置如图：</p> <p>可以更改目录，也可以更改端口，注意，端口不要和已经使用的端口冲突，去掉&#8220;use secure connnection https://&#8221;的选项</p> <p>这里的C:/Repositories是服务器文档目录，也就是我们提交到SVN里的文档的存放目录，这个目录大家可以更改</p> <p><img src="http://hi.csdn.net/attachment/201006/20/3441918_1277037653XWgW.jpg" alt="" height="389" width="500" /></p> <p>点击下一步，默认安装完成即可。</p> <p>3、安装客户端软件TortoiseSVN-1.5.3.13783-win32-svn-1.5.2.msi，双击默认安装就可以了，安装完成可能要重启，重启即可。</p> <p>4、配置服务器端</p> <p>点击开始--&gt;程序-&gt;VisualSVN--&gt;VisuaSVN Server  Manager启动服务器管理器，右键选择VisualSVN  Server(Local)，选择Properties，在弹出窗口中选择NetWork标签，在ServerName处输入本机的IP地址，我的地址为 192.168.158.129，端口我选择8080.，确定保存，再点击VisualSVN  Server可以看到右面的界面，我们的访问地址就是Sever URL http://192.168.158.129:8080/svn/</p> <p><img src="http://hi.csdn.net/attachment/201006/20/3441918_12770381783l3X.jpg" alt="" height="262" width="726" /></p> <p>&nbsp;</p> <p>现在我们新建两个目录，右键选择Repositories，选择Create new Repository，输入名字document，保存</p> <p>新建用户，右键选择 Users，选择Create User，输入用户密码test,test，这个口令将在客户端连接SVN服务器时使用</p> <p>为刚才创建的document &nbsp;Repository添加用户，右键选择document，选择Properties，点击Add按钮，选择刚才添加的用户，保存，如图</p> <p>&nbsp;</p> <p><img src="http://hi.csdn.net/attachment/201007/7/3441918_1278528062gxTk.jpg" alt="" height="588" width="969" /></p> <p>这样，服务器端就配置好了，回到客户端</p> <p>&nbsp;</p> <p>因为已经安装了客户端软件Tortoisesvn，在D盘下，新建文件夹testsvn，打开文件夹，右键选择check out(检出)，</p> <p>在弹出窗口的版本库URL处输入，http://192.168.158.129:8080/svn/document</p> <p>如图</p> <p>&nbsp;</p> <p><img src="http://hi.csdn.net/attachment/201007/7/3441918_1278528596HZqA.jpg" alt="" height="355" width="464" /></p> <p>确定，保存。注意上面的检出至目录是D:/testsvn，</p> <p>在testsvn中新建一个文本文档，新建文本文档.txt，在testsvn空白处，点击右键，选择提交，（commit），则文件会被传到文档服务器，其他人就可以下载了。</p></div><img src ="http://www.blogjava.net/gdufo/aggbug/378408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-05-17 15:06 <a href="http://www.blogjava.net/gdufo/archive/2012/05/17/378408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse下SVN subclipse插件</title><link>http://www.blogjava.net/gdufo/archive/2012/04/28/376993.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sat, 28 Apr 2012 13:09:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/04/28/376993.html</guid><description><![CDATA[<p>subversion程序，和mysql很类似，是c/s结构的，有客户端和服务器端。服务器端和客户端都是通过命令行方式启动和执行的。本文只会使用到客户端的命令。</p> <p>第三方提供了各种图形界面的客户端工具，比如eclipse插件subclipse，windows图形界面工具tortoiseSVN。这些后面会提到它们的基本使用。</p> <h3>subversion资源</h3> <ul><li>subversion官方网站：<a title="http://subversion.tigris.org/" href="http://subversion.tigris.org/"><strong><span style="color: #101a52;">http://subversion.tigris.org/</span></strong></a></li><li>subclipse官方网站：<a href="http://subclipse.tigris.org/"><strong><span style="color: #101a52;">http://subclipse.tigris.org/</span></strong></a></li><li>tortoiseSVN官方网站：<a href="http://tortoisesvn.tigris.org/"><strong><span style="color: #101a52;">http://tortoisesvn.tigris.org/</span></strong></a></li><li>使用subversion进行版本控制中文版在线版本：<a href="http://www.subversion.org.cn/svnbook/"><strong><span style="color: #101a52;">http://www.subversion.org.cn/svnbook/</span></strong></a></li></ul> <h3>安装subversion</h3> <p>有关subversion和subclise的安装暂略，因为目前提供的虚拟机开发环境已经安装和配置。</p> <p>tortoiseSVN，可到官方网站上下载最新版本的windows安装包，默认安装，不需要做其他设置，安装后需要重启计算机。能在资源管理器中鼠标右键菜单看到如下图所示条目，就说明安装成功。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image41.png"><img style="display: inline; margin-left: 0px; margin-right: 0px; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb41.png" border="0" height="268" width="183" /></a></p> <h3>使用subversion</h3> <p>日常工作中使用subversion仅仅是几个命令或者操作，并不复杂。但是它内部的一些机制需要逐渐去理解。</p> <h4>检出代码</h4> <p>在刚开始进入一个开发队伍的时候，已经有版本控制和软件项目，使用的第一个命令往往是检出（checkout）代码。或者当使用和研究开源软件的时候，也是第一个要用到这个命令。这个命令的作用是把项目的源代码下载到用户本地，并且带有版本控制信息。</p> <p>比如，执行以下命令获取一个项目的源代码：</p> <blockquote> <p><span style="background-color: #ffffff;">svn co <a href="http://easymorse.googlecode.com/svn/trunk/vfs.demo/"><strong><span style="color: #101a52;">http://easymorse.googlecode.com/svn/trunk/vfs.demo/</span></strong></a></span></p> </blockquote> <p>这个命令将在本地当前目录建vfs.demo目录并将该服务器目录下的所有文件下载到本地，并且，会生成隐藏文件.SVN目录，用于记录版本控制信息。</p> <p>tortoiseSVN有图形界面的检出操作，但是命令行方便快捷，建议使用命令行。</p> <p>如果使用eclipse并安装了subclipse插件，可以通过插件导入项目。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image42.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb42.png" border="0" height="141" width="482" /></a></p> <p>然后，</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image43.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb43.png" border="0" height="316" width="404" /></a></p> <p>选择或者新建资源库位置，</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image44.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb44.png" border="0" height="201" width="345" /></a></p> <p>选择资源库中的项目目录。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image45.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb45.png" border="0" height="385" width="416" /></a></p> <p>然后，就可以完成（finish）了。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image46.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb46.png" border="0" height="360" width="401" /></a></p> <h4>初始导入</h4> <p>何时使用初始导入，比如，对于java开发人员来说，在eclipse中编写了一个项目，并决定把项目共享到版本控制器上，这时就需要初始导入操作了。</p> <p>以下以subclipse为例说明初始导入的步骤。</p> <p>第一步，选择share project，共享你的项目：</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image61.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image6_thumb.png" border="0" height="351" width="454" /></a></p> <p>选择通过svn共享项目：</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image121.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image12_thumb.png" border="0" height="171" width="391" /></a></p> <p>填写svn提交的url：</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image181.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image18_thumb.png" border="0" height="352" width="491" /></a></p> <p>这个url，需要subversion的管理员告知你，还有用户名和密码。如果想练习一下，google提供了免费的svn，你可以通过：<a href="http://code.google.com/"><strong><span style="color: #101a52;">http://code.google.com</span></strong></a> 申请项目，这样就会有类似我上面的url和权限。</p> <p>然后可以直接点击finish，完成初始提交。选择next，可以做定制模块名和初始提交的信息，一般不需要。</p> <p>如果你的svn服务器使用了https协议，需要接受一个数字证书，一般选择永久接受。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image241.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image24_thumb.png" border="0" height="160" width="462" /></a></p> <p>之后，会要求输入用户名和密码。建议勾选保存密码，否则会很麻烦。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image291.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image29_thumb.png" border="0" height="207" width="352" /></a></p> <p>这样，再看项目，会发现条目上多了问号，这时需要选择哪些目录和文件需要提交，哪些需要忽略，比如生成的class文件等。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image33.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb33.png" border="0" height="260" width="223" /></a></p> <p>选择需要忽略的文件或者目录，这时需要切换到导航视图下才能看到所有文件和目录：</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image371.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image37_thumb.png" border="0" height="218" width="324" /></a></p> <p>从导航视图看到的情况：</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image411.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image41_thumb.png" border="0" height="287" width="225" /></a></p> <p>选中需要忽略的目录和文件，操作svn：</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image451.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image45_thumb.png" border="0" height="337" width="513" /></a></p> <p>然后提交整个项目即可。有关提交的操作见下文。</p> <h4>更新项目</h4> <p>项目在提交前，应该先做更新项目操作。比如有一个文件a.txt，已经提交到svn中，这样，可能有其他用户提交了新的改动到a.txt，你现在又 修改了a.txt，准备提交你的改动。先操作更新a.txt，这样如果该文件在svn服务器已经改动，会将改动加入到当前本地的a.txt中。</p> <p>在subclipse中的操作：</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image37.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb37.png" border="0" height="344" width="518" /></a></p> <h4>提交代码</h4> <p>提交代码，一般会级联当前目录下所有改动的内容。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image55.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image55_thumb.png" border="0" height="399" width="515" /></a></p> <h4>删除代码</h4> <p>对于不再使用的代码，可以直接删除掉，比如通过windows删除文件，通过ubuntu的rm命令或者通过eclipse的delete功能，然后提交项目，subclipse会知道哪个文件被删除了，并将这个变化通知给svn服务器。</p> <h4>还原代码</h4> <p>如果代码做了改动，可以是多个文件，也可以删除了文件或者新增了文件，但是没有提交到svn服务器，可以通过还原功能恢复到改动前的样子。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image60.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image60_thumb.png" border="0" height="341" width="518" /></a></p> <h4>版本的分支与合并</h4> <p>版本的分支和合并，是版本控制的核心功能。</p> <p>比如，软件通过版本的分支，将项目分配给多人做分工开发，通过版本合并，将这些分工实现的代码合并到新的版本中；或者，修改代码bug的时候，可以 先打出一个版本分支，保留出现bug的版本，比如分支版本名称为pre_fix_bug_2201，这里2201表示bug的代号，然后针对这个分支做修 改fix这个bug，再将修改后的内容提交到一个新的分支版本，比如post_fix_bug_2201，再到适当时候将这个分支合并到代码主干中去。</p> <p>以上说了一下版本分支与合并的用途，这里简单说一下svn版本分支合并的基本原理。</p> <p>首先是版本分支，实际上是将当前版本&#8220;copy&#8221;到分支上，非常类似windows下，将某个目录的快捷方式复制到其他路径。这种copy，可以说 是轻量级copy或者叫廉价copy，不是复制版本内容，而是做一个内部的引用。这样的copy很快，对服务器也没有空间上的开销。</p> <p>版本的合并，是svn开发中的难点，当做版本合并的时候，服务器会试图智能的合并同一个文件的不同版本，可能会带来版本冲突，这需要操作者做手工的处理，消除版本冲突。合理分工的项目应该可以通过管理手段尽量避免这种情况。</p> <p>以下是通过subclipse演示版本分支的操作。首先，项目文档应该已经全部提交，然后，选择</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image47.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb47.png" border="0" height="449" width="514" /></a></p> <p>然后，填写url，一般是在tags/目录下：</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image48.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb48.png" border="0" height="362" width="514" /></a></p> <p>然后默认选项，next即可，然后选择finish按钮。在svn的相应路径下就会有一个同名的项目。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image49.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb49.png" border="0" height="395" width="332" /></a></p> <p>打分支，实际上就是建立了一个项目的轻量级copy。</p> <p>如何从版本的一个分支切换到另外一个分支，这也是很重要的，它能帮助你轻松在不同的项目版本中自动切换，而不必在eclipse里维持多个项目。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image50.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb50.png" border="0" height="426" width="495" /></a></p> <p>选择要切换的项目版本路径，或者直接输入亦可。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image51.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb51.png" border="0" height="281" width="385" /></a>&nbsp;</p> <p>然后点击ok后，项目即可切换到该版本下。</p> <p>在分支上做了改动，并且已经提交（一般tags目录下的项目约定是只读的，不建议改动，这里是为了举例方便），那么，可以将这个版本合并到trunk（主干）代码中，让主干也拥有最新的代码。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image52.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb52.png" border="0" height="473" width="464" /></a>&nbsp;</p> <p>选择需要合并的源，比如从tags上面一个版本，合并到主干（trunk）代码中。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image53.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb53.png" border="0" height="255" width="474" /></a></p> <p>之后，需要设置一些合并的特性，这里默认配置即可。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image54.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb54.png" border="0" height="496" width="422" /></a></p> <p>执行完毕后，会有一个合并报告，可见没有出现冲突情况。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image56.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb55.png" border="0" height="445" width="436" /></a></p> <p>这时候看源代码，可以发现有改动，这些改动就是合并过来的代码。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image57.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb56.png" border="0" height="220" width="284" /></a></p> <p>改动如果没有问题，就可以提交，这样就完成了一次版本的合并工作。</p> <p>&nbsp;</p> <p>&nbsp;</p> <h4>&#8220;还原&#8221;已经提交的改动</h4> <p>如果文档没有提交，还原是很容易的，只需执行还原（revert）就可以了。有时候，已经提交了代码，结果发现了问题，需要回退到之前提交的版本，就不是很容易了。</p> <p>这时候的还原，其实是将以前的某个修订本（revision）覆盖当前的本地工作拷贝。然后再提交这些改动，成为新的修订本。</p> <p>下面演示一下。</p> <p>首先提交了一个版本的改动，这是以后需要还原回来，这里，为了以后还原方便，要在提交的消息中说明改动了什么。（这一步在开发中是必须的，是纪律）</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image58.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb57.png" border="0" height="352" width="502" /></a></p> <p>下面，再修改一下项目，然后提交一次，这里故意增加一个文件。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image59.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb58.png" border="0" height="359" width="510" /></a></p> <p>提交以后，后悔了，想恢复到前一个修订版。虽然可以通过版本号进行覆盖还原，但是一般人是无法记忆这个版本号的，另外就是实际情况往往更复杂，不会像示例中那样是相邻的两个修订版。</p> <p>所以提交修订版时的注解消息就显得特别重要。</p> <p>这时可以通过svn的日志功能查看到这些版本和它们的注释消息。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image62.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb59.png" border="0" height="426" width="488" /></a></p> <p>看到历次版本的消息内容。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image63.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb60.png" border="0" height="169" width="498" /></a></p> <p>这样，根据注释，我们很容易找到需要还原到以前的那个修订版。如果不放心，我们还可以根据上下文菜单，对比两个修订版的区别。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image64.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb61.png" border="0" height="320" width="427" /></a></p> <p>看比较结果。可以看出，增加了一个文件，另外一个文件中有一处差异。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image65.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb62.png" border="0" height="311" width="495" /></a></p> <p>那么，可以确定是从125修订版恢复（还原）。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image66.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb63.png" border="0" height="162" width="499" /></a></p> <p>更改后的项目，相当于用125修订版还原了126修订版。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image67.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb64.png" border="0" height="232" width="353" /></a></p> <p>可以看到126版本添加的文件不见了，另外VfsDemo.java文件也还原到125版本的内容。这时提交将成为127版本，这个版本其实就是125版本。算是还原了主干（trunk）上的代码。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image68.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb65.png" border="0" height="320" width="424" /></a></p> <p>刷新历史，可以看到修订版已经生效。</p> <p><a href="http://marshal.easymorse.com/wp-content/uploads/2009/11/image69.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://marshal.easymorse.com/wp-content/uploads/2009/11/image_thumb66.png" border="0" height="165" width="513" /></a></p><img src ="http://www.blogjava.net/gdufo/aggbug/376993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-04-28 21:09 <a href="http://www.blogjava.net/gdufo/archive/2012/04/28/376993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows下安装SVN（Subversion）独立服务器步骤：</title><link>http://www.blogjava.net/gdufo/archive/2012/04/28/376990.html</link><dc:creator>gdufo</dc:creator><author>gdufo</author><pubDate>Sat, 28 Apr 2012 10:41:00 GMT</pubDate><guid>http://www.blogjava.net/gdufo/archive/2012/04/28/376990.html</guid><description><![CDATA[参考:<div>http://blog.ofriend.cn/post/95.html</div><br /><div><p>Windows下安装SVN（Subversion）独立服务器步骤：</p><p>安装之前需要准备的软件：</p><blockquote><p>1、Setup-Subversion-1.7.0.msi<br />2、TortoiseSVN-1.7.0.22068-win32-svn-1.7.0.msi<br />3、LanguagePack_1.7.0.22068-win32-zh_CN.msi</p></blockquote><p>下载地址：</p><blockquote><p>1、<a href="http://sourceforge.net/projects/win32svn/files/">http://sourceforge.net/projects/win32svn/files/</a>&nbsp; <br />2、<a href="http://sourceforge.net/projects/tortoisesvn/files/">http://sourceforge.net/projects/tortoisesvn/files/</a></p></blockquote><p>安装步骤及简要配置：</p><blockquote><p>1、安装Setup-Subversion-1.7.0.msi<br />2、安装TortoiseSVN-1.7.0.22068-win32-svn-1.7.0.msi<br />3、安装LanguagePack_1.7.0.22068-win32-zh_CN.msi</p><p>4、添加subversion环境变量：<span style="color: #ff0000"><strong>c:\program files\subversion\bin</strong></span></p><p>5、创建版本库：<br />a、<span style="color: #ff0000"><strong>svnadmin create c:\svn\repository<br /></strong></span>b、创建空目录repository-&gt;右键-&gt;TortoiseSVN-&gt;Create Repository here...</p><p>6、配置用户和认证：<br />&nbsp;Svnserve.conf:核心配置文件：<br />&nbsp;&nbsp;# password-db = passwd &gt;<span style="color: #ff0000"><strong>password-db = passwd<br /></strong></span>&nbsp;&nbsp;# authz-db = authz &gt;<span style="color: #ff0000"><strong>authz-db = authz<br /></strong></span>&nbsp;Authz:配置用户权限的文件<br />&nbsp;Passwd:新加用户名和密码的文件</p><p>启动subversion:</p><p>在dos命令下，输入：&gt; svnserve exe -d -r d:\svn_repo(<span style="color: #0000ff;">这行自己加的)</span><br /></p><p>7、运行Subversion：c:\svn\repository&gt;<span style="color: #ff0000"><strong>svnserve --daemon<br /></strong></span>&nbsp;或者：c:\svn\repository&gt;<strong><span style="color: #ff0000">svnserve --daemon --root c:\svn<br /></span></strong>注：运行的时候不能关闭命令行窗口，关闭服务就退出了！因此可以添加到系统服务项随机启动即可！</p><p>8、添加系统服务，随系统启动：<br /><span style="color: #ff0000"><strong>sc  create svnservice &nbsp;binpath= "c:\program  files\subversion\bin\svnserve.exe --service --root c:\svn" displayname=  "Subversion" depend= tcpip start= auto</strong></span></p><p>9、删除服务：<br /><strong><span style="color: #ff0000;">sc delete&nbsp;svnservice</span></strong></p><p><strong><span style="color: #ff0000"><br /></span></strong></p></blockquote><p>注：在Windows XP SP3下测试通过！其他平台暂未测试！</p></div><img src ="http://www.blogjava.net/gdufo/aggbug/376990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gdufo/" target="_blank">gdufo</a> 2012-04-28 18:41 <a href="http://www.blogjava.net/gdufo/archive/2012/04/28/376990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>