如何在VS中使用SVN

svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。

运行方式

  svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。

存储数据

  svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。   详见 subversion

安全领域的SVN

  SVN站在更高层次上对现在的安全产品,从系统和控制的角度进行了"有机"和"无隙"的整合。   SVN是一个安全虚拟网络系统,它将系统整体的信息安全功能均衡合理地分布在不同的子系统中,   使各子系统的功能得到最大限度的发挥,子系统之间互相补充,系统整体性能大于各子系统功能之和,用均衡互补的原则解决了"木桶原理"的问题。   SVN能在跨接Internet, Intranet, Extranet间的网络所有端点实现全面的安全,而且还能提供基于企业策略的信息管理机制以充分有效地利用有限的带宽。SVN可以满足各种企业VPN的要求,通过为公司内部网络、远程和移动用户、分支机构和合作伙伴提供基于Internet的安全连接。所以,我们可以将SVN看成是VPN、 防火墙、基于企业策略的信息管理 软件集成在一起的Internet安全的综合解决方案。在这样一个网络系统中,所有互联网服务器端和 客户端都是安全的,并有一个信息管理机制以不断地通过这个外部网络环境动态地分析及满足客户的特定带宽需求。SVN提供了目前基于网络实现的eBusiness 应用的安全服务,它包含:   对多种应用进行全面的安全认证;   支持多种认证及PKI;   功能强大并对用户透明的通讯加密;   面向用户的集中安全策略管理;   统一跨接Internet、Intranet、Extranet的通讯。

完整的SVN体系结构应包括以下部分

  带有防火墙的VPN网关,它是一个将防火墙和VPN技术紧密结合的网关产品;   SVN安全远程客户端 软件包,一个功能强大的VPN客户端软件,支持台式机用户、远程用户和移动用户,具有集中化管理的 个人防火墙功能和VPN用户的安全认证功能;   SVN证书管理模块,一个用于SVN的完整PKI解决方案,它将完善的CA和 LDAP目录服务器技术集成在一起;   SVN硬件加密卡,可以通过硬件技术实现功能强大的各种算法以提高VPN的速度和性能;   SVN智能带宽管理模块,一个基于企业策略的带宽管理解决方案,可以智能地管理有限的带宽资源,以确保用于企业重要应用的VPN性能可靠;   SVN冗余管理模块,通过冗余网关集群和防火墙VPN内的SVN冗余模块,对执行重要任务的VPN和防火墙应用在出现故障时实现无缝切换。   自动地址转换模块,一个自动管理IP地址和命名的解决方案,通过提供IP地址服务的跟踪和集中化管理,确保可靠地控制地址分配和提高TCP/IP管理效率;   SVN安全服务器软件包,专门保护单个应用服务器安全的VPN网关软件,它可以保护进行敏感操作的服务器免受攻击和未授权的访问,使客户端建立与服务器间的安全认证和支持交换加密数据的连接;   SVN安全客户端软件包,它将基于状态检测的防火墙和基于IPSec的VPN客户端软件集成在客户端机器上,通过提供集中管理的个人防火墙和对所有企业VPN用户的安全认证,增强客户端机器的安全性。它与 SVN安全远程客户端软件功能相比,增强了客户端的安全功能,如访问控制和安全初始化控制等。

SVN与CVS优缺点分析

  所有的文档都显示SVN可以取代CVS,同时SVN的问题和缺点都被隐藏了。不幸的是,我们并不认为SVN是CVS的替代品,尽管很多缺陷都被修改了。更有甚者,它甚至让人重回VSS。CVS和SVN的比较类似与比较C++和Java。很明显CVS和SVN都远比SourceSafe强大的多,如同C++和Java比Basic强大的多。CVS代表了几乎代码控制系统的所有功能项,尽管有时他的实现并不很方便。SVN修正并添加了一些CVS并不拥有功能。例如,创建标志和分支dubious,你在编辑文件时其他人不会有任何通知。SVN并不是CVS的替代品,只是个不同的系统,类似于CVS。它有些特有的功能,足以作为采用它的理由。这些功能使他更适合于开发环境,例如对PowerBuilder。下面你可以找到两者的相对优势、劣势。    1 存储类型格式     CVS是个基于RCS文件的版本控制系统。每个CVS文件都不过是普通的文件,加上一些额外信息。这些文件会简单的重复本地文件的树结构。因此,不必担心有什么数据损失,如果必要的话可以手工修改RCS文件。   SVN是基于关系数据库的(BerkleyDB)或一系列二进制文件的(FS_FS)。一方面这解决了许多问题 (例如,并行读写共享文件)以及添加了许多新功能(例如运行时的事务特性。)。然而另一方面,数据存储由此变得不透明。    2 速度   CVS比较慢。   整体而言,由于架构实现的不同, SVN的确比CVS快很多。在网络上它只传输很少的信息并支持更多的离线模式的功能。但这也是有代价的。速度的代价就是巨大的存储(完全备份所有的工作文件)。    3 标志&分支   SVN把采用标志和分支而抛弃了其他三件东西,实际上这意味着他们把这个概念替换为在档案库内部复制文件或目录以便保存日志。这样一来,无论标志创建还是分支创建都只是仓库内部的文件复制了。对分支而言:现在分支不过是在仓库内部的一个单独的目录而已了,不像早期还有些什么交错。对标志而言:已经不能对代码加标志了。在某种程度上说,SVN全文件编号补足了这个缺陷,SVN里整个仓库都有 版本号,但不是针对单个文件。    4 元数据    CVS只允许存储文件。    SVN允许一个文件有任意多的可命名属性,功能十分完全。    5 文件类型    CVS最初是为文本文件存储而设计的。因此其他文件类型(二进制,统一码)文件的支持几乎没有,如需要的话则要有其他信息,并且客户端服务器端都要调整。   SVN会关心所有的文件类型,不需要你来手工操作。    6 滚回    CVS允许任意的滚回,在任意一个已递交的版本上,尽管这要花些时间(所有的文件都要分别处理)。    SVN不允许递交后滚回。建议把版本 库里好的状态版本加到末尾,覆盖掉损坏的版本。而损坏的版本无论如何也是会存在数据库里的。(SVN的滚回操作实际上是merge操作)    7 事务    CVS中的“零或一”事务原则根本没有实现。如果检入几个文件的话(加到服务器上),很有可能部分文件完成了,而另几个没有。作为一个潜规则,手工纠正这些并且对余下的文件 (而不是所有文件)一一重复检入。这样这些文件将在两阶段中被检入。SVN的确支持“零或一”事务原则,这是SVN的一大优势。

SVN的发展历史

  早在2000年,CollabNet, Inc.就开始召集开发人员开发CVS的替代品。CollabNet 提供一套名为SourceCast协同工作套件,其中的一部分组件是 版本控制。虽然SourceCast使用CVS作为其最初的版本控制系统,但是CVS的种种限制从一开始就处处可见,最后CollabNet明白必须要找到一个更好的解决方案。不幸的是,至少在免费license中,因为没有更好的选择,CVS已经广泛成为了开源世界中事实上的标准。所以CollabNet决定开发一个新的版本控制系统,保留CVS的基本特性但去除CVS的bug和不好的特性。   在2000年2月,他们联系《使用CVS开发开源项目》(Open Source Development with CVS)(Coriolis, 1999)的作者Karl Fogel,并征求了他是否愿意在这个新的项目中担任一个角色。巧合的是,当时Karl已经和他的朋友Jim Blandy讨论了一个关于新的版本控制系统的设计。在1995年,这两人就成立了Cyclic Software,一个提供CVS的商业支持的软件公司。虽然他们经营商业服务,但是仍然在每天都在工作中使用CVS。使用CVS的挫折感使得Jim认真思考更好的方法来管理数据,不但确定名字为“Subversion”,而且完成了Subversion档案库的基础设计。   当CollabNet的电话到来时,Karl立即答应了加入项目中,而且Jim让他的雇主RedHat Software同意让他在这个项目中不定期工作。CollabNet雇用了Karl和Ben Collins-Sussman,并在5月开始了详细设计工作。在得到了来自CollabNet的Brian Behlendorf、Jason Robbins和Greg Stein(当时是一名活跃在WebDAV/DeltaV规范过程的自由程序员)很多创意的帮助下,Subversion很快地引起了一个活跃开发者社区的注意。它找出并欢迎很多同样在CVS上受到挫折的社员能来为这个项目做点什么。   Subversion 最初的设计Team定下了几个简单的目标。 它必须在功能上可取代 CVS,也就是说, 所有 CVS 可做到的事, 它都要能够作到。 在修正最明显的瑕疵的同时, 还要保留相同的开发模式。 还有, Subversion 应该要和 CVS 很相像, 任何 CVS 使用者只要花费少许的力气, 就可以很快地上手。   经过十四个月的编码后, Subversion 于2001年8月31日开始实现 “自行管理”。 也就是说, 开发人员不再使用 CVS 来管理 Subversion 的代码, 而以 Subversion 自己来管理。

其他

  从启动这个项目到现在,虽然CollabNet提供了大部分的资金(它付出几位全职 Subversion 开发人员的薪水), 但这还是个开源项目, 由一组松散透明的规则所约定。 CollabNet 拥有代码的版权完全符合 Debian Free Software Guidelines。 换句话说, 每个人都可以随意地免费下载、修改、以及重新发布 Subversion; 完全不需要经过 CollabNet, 或是任何人的允许。

 

AnkhSvn插件实现在VS中使用SVN

概述

  AnkhSVN是一款在VS中管理Subversion的插件,您可以在VS中轻松的提交、更新、添加文件,而不用在命令行或资源管理器中提交。而且该插件属于开源项目.

使用介绍

  1。AnkhSvn是一种对版本和源代码进行控制的工具。使用它我们可以做到随时随地的进行项目开发,摆脱了开发过程中空间的限制(当然,随时随地的条件是可以上网),同时解决了团队合作中的一个令人头疼的问题--修改冲突。以前我们用SourceSafe进行项目控制时,经常发生团队成员之间对同一段代码做了修改,而在提交时就会出错,时常出项代码的覆盖以及以及更改的丢失。同时AnkhSvn解决了我们无法查看对该解决方案所做更改(即view history)的问题,保证了代码提交的安全性,同时使我们每个人从担心代码冲突、代码覆盖的疑虑中解放出来,能够全身心投入项目开发中。   2。AnkhSvn的常用操作:   (1)建立本地的服务器版本。Subversion->Add to Subversion   此功能的作用是从源代码上获取一个服务器版本到本地上。   Subversion->Open from Subversion,然后再Url地址框中输入地址路径(注意:此处的协议头是https,它传输的安全性更高。),点击open按钮即可(第一次使用时需要制定获取服务器版本到本地的物理路径)。   (2)获取最新版本   打开解决方案后,点击右键有一个“Update to Latest Version”。   (3)提交(commit)、撤销(revert)   (4)撤销至某一个版本:右键你要撤销的文件(注意:在这里点击不同的文件的效果是不一样的,例如右键解决方案或者是类库或者是文件夹,只能在viewhistory或者viewsolutionhistory选项中撤销至你选定的版本;而如果右键某一个文件,例如。cs文件或者。aspx文件,除了上述选项,我们还可以选定任意的版本来show changes)。   (5)view history、view solution history、view project history三种浏览历史记录的方式。通过浏览历史记录我们可以了解版本信息、了解团队成员的工作情况。(注意:当点击相应的浏览历史记录的按钮时,在弹出框中有changed paths提示框,双击框中的记录可以查看具体的修改信息。)   (6)作副本   点击“视图”中的working copy explorer,然后再working copy folders中选定sln文件,点击上方的copyto图标选定一个存放副本的物理路径(注意必须是一个新的文件夹,而不能是已经存在的文件或文件夹)。   (7)Merge--版本合并。   最常用的merge方式就是以下两种:   ((1))Merge a range of revisions   我的理解是可以合并一系列的不同版本,将不同版本上与本版本的不同之处进行合并。   ((2))Reintegrate a branch   就是将分支版本上的修改返回到创建该分支版本的源版本,即主干版本或者其他。要使用这个方法要求这个分支版本不能再有任何本地修改,必须是一个单独的版本,不能有任何分支子版本。而且这个版本号必须高于或者等于要融合的最后的版本号。   3。常见问题解析:   (1)代码过时。通常会表现为当我们修改了某个文件的某段代码后准备提交时,当点击“commit”时提示part of your code is out of date。这说明我们在对这个文件进行修改时,同时有另外的成员在对这个页面进行修改,这时我们需要首先获取一下最新版本,如果别的成员做过的修改恰好是我们改动的部分,就会有形如“>>>>mine”和“<<<<XXXX”的错误,同时文件上可能会有一个“!”。一般“>>>>mine”下面的表示我们的代码,而“<<<<XXXX”下面的表示其他成员更改的代码。这时我们需要分析决定怎样处理这个错误,处理后要将“>>>>mine”和“<<<<XXXX”提示符删掉。   (2)修改冲突。有时候我们修改完毕以后将我们的工作提交后才获取最新版本(一般不提倡,最好的做法是提交前先获取最新版本,如果有问题处理问题),获取后开始“重新生成解决方案”出现了我们的web项目BlackJack.Web.csproj无法加载。这是由于我们做了自己的修改提交前并没有及时获取最新版本,导致代码中有重复修改的地方。这时我们需要右击BlackJack.Web.csproj有个选项是“编辑BlackJack.Web.csproj”,然后在打开的文件中搜索“mine”(目的是找到冲突地方),找出后进行分析取舍,完成后再次“重新生成解决方案”后加载web项目,这时就会出现,但因为代码中的冲突依然存在因此会有“!”提示我们,找到相关的冲突的文件处理后会发现文件前的图标变成了红色小方框,代表冲突解决我们就可以编译后提交了。
安装SVN客户端后,然后再安装ankhsvn插件即可在VS中使用SVN对代码进行管理。(AnkhSvn是一个开源的插件)

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值