版本控制工具

版面控制模式

首先介绍几个版本控制软件相互比较的重要依据,更详细的比较请参考文中链接:

版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器(C/S)和分布式两种模式。


在客户端/服务器模式下,每一用户通过客户端访问位于服务器的主版本库,每一客户机只需保存它所关注的文件副本,对当前工作副本(working copy)的更改只有在提交到服务器之后,其它用户才能看到对应文件的修改。

而在分布式模式下,这些源码版本库副本间是对等的实体,用户的机器出了保存他们的工作副本外,还拥有本地版本库的历史信息。

并发模式(Concurrency model):描述了当同时对同一工作副本/文件进行更改或编辑时,如何管理这种冲突以避免产生无意义的数据,有排它锁和合并模式


在排它锁模式下,只有发出请求并获得当前文件排它锁的用户才能对对该文件进行更改。

而在合并模式下,用户可以随意编辑或更改文件,但可能随时会被通知存在冲突(两个或多个用户同时编辑同一文件),于是版本控制工具或用户需要合并更改以解决这种冲突。

因此,几乎所有的分布式版本控制软件采用合并方式解决并发冲突。


历史模式(History model):描述了如何在版本库中存贮文件的更改信息,有快照和改变集两种模式。

在快照模式下,版本库会分别存储更改发生前后的工作副本;

而在改变集模式下,版本库除了保存更改发生前的工作副本外,只保存更改发生后的改变信息。


变更范围(Scope of change):描述了版本编号是针对单个文件还是整个目录树。

网络协议(Network protocols):描述了多个版本库间进行同步时采用的网络协议。

原子提交性(Atomic commit):描述了在提交更改时,能否保证所有更改要么全部提交或合并,要么不会发生任何改变。

部分克隆(Partial checkout/clone):是否支持只拷贝版本库中特定的子目录。

名称 版本库模型 并发模式 历史模式 变更范围 网络协议 原子提交性 部分克隆
CVS Client-server Merge Changeset File Pserver,ssh No Yes
SVN Client-server 3-way merge, recursive merge, octopus merge Changeset and Snapshot Tree custom (svn), custom (svn) over ssh, HTTP and SSL (usingWebDAV) Yes Yes
Git Distributed Merge or lock Snapshot Tree custom, custom over ssh, rsync, HTTP/HTTPS, email, bundles Yes No

主要参考链接:

http://en.wikipedia.org/wiki/Comparison_of_revision_control_software#cite_note-47

http://www.softeng.rl.ac.uk/media/uploads/publications/2010/03/cvs-svn.pdf

http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/

http://jon.limedaley.com/plog/archives/2004/10/15/version-control-comparison

版本控制软件中Trunk和Branch的区别:

Trunk---软件开发过程中的主线,保存了从版本库建立到当前的信息。

 Branch---软件开发过程中的分支,保存了从版本库的某一特定点(不一定是版本库建立时)到当前的信息。分支主要用于在不影响Trunk其它用户情况下进行一些关于新功能的探索性或实验性的开发,待新功能完善后它也可以合并到Trunk中。


术语

签入文件或目录

此操作将工作目录作为新版本复制回存储库。

签出文件或目录

此操作从存储库中将文件的最新修订版本复制到工作空间。签出目录时,将签出该目录下的所有文件和子目录。

提交文件或目录

此操作与签入文件或目录相同。版本控制用户会经常说他们“已提交更改”;这表示他们对各自文件的工作副本做了更改,并将这些更改提交到存储库。

冲突

当两名开发人员对同一文件的工作副本进行更改,并将这些更改提交到存储库时,他们的工作可能会发生冲突。在这种情况下,CVS 或 Subversion 将检测冲突,并要求某个人先解决该冲突,然后再提交他们的更改。

合并

将对相同文件的不同工作副本进行的多个更改合并到源存储库中。合并是一种管理冲突的策略,它允许多名开发人员同时工作(不必对文件进行锁定),然后将他们的工作并入一个组合版本中。当对同一文件的不同行进行两组更改时,合并这两组更改很容易,而合并操作也可正常进行。但对文件的同一行或几行进行更改时,将发生冲突,这就要求有人手动编辑该文件,然后才能将这些更改成功提交到源存储库。

存储库

具有受版本控制的所有文件的完整修订历史的共享数据库。

解决

当两名开发人员试图提交发生冲突的更改,而造成文件内的冲突时,必须通过手动编辑该文件进行处理。必须有人逐行检查该文件,以接受一组更改并删除另一组更改。除非冲突解决,否则存在冲突的文件无法成功提交到源存储库中。

修订版本

对各个文件进行具体更新的编号草案。每次编辑文件并将它提交回存储库时,该文件的修订版本号将会增加。

版本

用于标识文件集 的编号方案,可在某个时间点标记并命名这些文件集。
工作空间
要在本地硬盘或 Unix 用户帐户上编辑的文件副本。在工作空间中编辑文件时,这些文件将不再与存储库同步。这就是进度!然后您需要将更改返回存储库,以便其他人可以看到这些更改。
Subversion 词汇表

APR

Subversion 置于称为 APR(Apache 可移植运行库)的可移植层上。 这意味着 Subversion 应该在任何运行 Apache httpd 的操作系统上工作: Windows、Linux、BSD 的所有 flavors、Mac OS X、Netware 以及其它操作系统。

分支

分支是指目录和文件的现有原始树的副本。 分支的生命周期是从某事物的副本开始的,并从此副本处移动,生成自己的历史。 通常创建分支以尝试新功能,同时不影响具有编译器错误和小问题的开发的主分支。

检出

检查存储库,会在本地计算机上创建所需分支的副本。 此副本包含了您指定的存储库的最新版本。

提交

文件的提交意味着已将对本地副本所做的更改更新到存储库中。 提交文件后,用户可以查看对特定文件执行“更新”后的最新版本。

冲突

有时候,当您更新存储库中的文件时,可能会遇到冲突。 当两个或多个用户更改文件中的一些相同行时,将发生冲突。

Hook

Hook 是被存储库事件触发的程序,例如创建新版本或修改无版本属性。 Hook 中保留了足够的信息,可以告知该事件是什么、正被操作的目标是什么,以及触发此事件的人员的用户名是什么。

锁定

锁定是指一种机制,在此机制下,用户请求获得修改工作副本文件的更改的专有权限。

合并

合并是指将某分支上的更改联接到此主干或同为主干的另一个分支。

存储库

Subversion 的核心为存储库。 它是一个存储和共享数据的集中式系统。 存储库以一组树和分支的形式(即目录和文件的层次结构)存储信息。 任何数量的客户端都可以连接到存储库中,并对这些文件进行读取和写入

Visual Source Safe(简称VSS)

VSS是美国微软公司的产品,目前常用的版本为6.0版。VSS是配置管理的一种很好的入门级的工具。
易学易用是VSS的强项,VSS采用标准的windows操作界面,只要对微软的产品熟悉,就能很快上手。VSS的安装和配置非常简单,对于该产品,不需要外部的培训(可以为公司省去一笔不菲的费用)。只要参考微软完备的随机文档,就可以很快的用到实际的工程当中。
VSS的配置管理的功能比较基本,提供文件的版本跟踪功能,对于build和基线的管理,VSS的打标签的功能可以提供支持。VSS提供share(共 享)、branch(分支)和合并(merge)的功能,对于团队的开发进行支持。VSS不提供对流程的管理功能,如对变更的流程进行控制。
VSS不能提供对异地团队开发的支持。此外VSS只能在windows平台上运行,不能运行在其他操作系统上。 有软件提供商提供VSS插件,可以同时解决VSS跨平台和远程连接两个问题,例如SourceAnywhere for VSS, SourceOffSite等。
VSS的安全性不高,对于VSS的用户,可以在文件夹上设置不可读,可读,可读/写,可完全控制四级权限。但由于VSS的文件夹是要完全共享给用户后,用户才能进入,所以用户对VSS的文件夹都可以删除。这一点也是VSS的一个比较大的缺点。
VSS没有采用对许可证进行收费的方式,只要安装了VSS,对用户的数目是没有限制的。因此使用VSS的费用是较低的。
微软不再对VSS提供技术支持。

SourceAnywhere

SourceAnywhere系列是由加拿大公司Dynamsoft开发的,有三个产品,SourceAnywhere for VSS, SourceAnywhere Standalone, SourceAnywhere Hosted.
SourceAnywhere for VSS是微软推荐的远程和跨平台访问VSS的工具。SourceAnywhere Standalone界面风格与VSS相似,但它是基于SQL Server的,且有其它一些安全和远程访问机制,可以广域网中使用;支持把数据从VSS库中导入SourceAnywhere。SourceAnywhere Hosted是SourceAnywhere Standalone的托管服务SaaS。

Concurrent Version System(简称CVS)

CVS是开发源代码配置管理工具,其源代码和安装文件都可以免费下载。
CVS是源于unix的版本控制工具,对于CVS的安装和使用最好对unix的系统有所了解能更容易学习,CVS的服务器管理需要进行各种命令行操作。目前,CVS的客户端有winCVS的图形化界面,服务器端也有CVSNT的版本,易用性正在提高。
CVS的功能除具备VSS的功能外,还具有:
它的客户机/服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码;它的无限制的版本管理检出(checkout:注1)的模式避免了通常的 因为排它检出模式而引起的人工冲突;它的客户端工具可以在绝大多数的平台上使用。同样,CVS也不提供对变更流程的自动管理功能。
一般来说,CVS的权限设置单一,通常只能通过CVSROOT/passwd, CVSROOT/readers, CVSROOT/writers文 件,同时还要设置CVS REPOS的物理目录权限来完成权限设置,无法完成复杂的权限控制;但是CVS通过CVS ROOT目录下的脚本,提供了相应功 能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。
CVS是开发源码软件,无需支付购买费用。
同样因为CVS是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找网上的资料进行解决。

SVN

SVN全名Subversion,即版本控制系统。
SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。Subversion 是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程序源码。
SubVersion:实现服务系统的软件
TortoiseSVN:是SVN客户端程序,为windows外壳程序集成到windows资源管理器文件管理系统的Subversion客户端。
SVNService.exe:是专为 SubVersion 开发的一个用来作为 Win32 服务挂接的入口程序。
AnkhSVN:是一个专为Visual Studio提供SVN的插件

StarTeam

StarTeam是Borland公司的配置管理工具,StarTeam属于高端的工具,在易用性,功能和安全性等方面都很不错。
StarTeam的用户界面同VSS的类似,它的所有的操作都可通过图形用户界面来完成,同时,对于习惯使用命令方式的用户,StarTeam也提供命令集进行支持。同时,StarTeam的随机文档也非常详细。
除了具备VSS,CVS所具有功能外,StarTeam还提供了对基于数据库的变更管理功能,是相应工具中独树一帜的。StarTeam还提供了流程定制 的工具,用户可跟据自己的需求灵活的定制流程。与VSS和CVS不同,VSS和CVS是基于文件系统的配置管理工具,而StarTeam是基于数据库的。 StarTeam的用户可根据项目的规模,选取多种数据库系统
STARTEAM无需通过物理路径的权限设置,而是通过自己的数据库管理,实现了类似WINDOWSNT的域用户管理和目录文件ACL控制。 StarTeam完全是域独立的。这个优势可以为用户模型提供灵活性,而不会影响到现有的安全设置。StarTeam访问控制非常灵活并且系统。您可以 对工程,视图,文件夹一直向下到每一个小的item设置权限。对于高级别的视图(view),访问控制可以与用户组、用户、项目甚至视图等链接起来。
StarTeam是按license来收费的,比起VSS,CVS来,企业在启动StarTeam进行配置管理需要投入一定资金。
Borland公司将对用户进行培训,并协作用户建立配置管理系统。并对用户提供技术升级等完善的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值