阅读更多

15顶
0踩

研发管理

转载新闻 版本管理器的发展史

2010-11-18 07:43 by 正式记者 HQAY0925 评论(9) 有8106人浏览
版本管理器的进化图(原文链接如下:
http://codicesoftware.blogspot.com/2010/11/version-control-timeline.html):



这张图上分成了四个时期:

史前时期:1982年的RCS。现在你可能还能在Unix的发布包中找到它。

古典时期:1990年的CVS(经典的SCM管理器,可惜不能track目录和文件名的改变,今天这个东西已经过时了),1985年的 PVCS,1992年的clearcase(价格贵,功能复杂,当然,今天也有很多公司在用),微软的VSS(Welcome to Hell),90年代中期的Perforce(P4,这个工具今天都还在被广泛地使用,尤其是那些中等大小却有着大量开发团队的公司,现在是Google 内部最大的代码管理器)。

中世纪时期:SVN(Linus很不喜欢SVN,2006年引入了Git),AccuRev(强力支持branch和merge,其扮演了一个很重要角色帮助社区脱离clearcase和CVS),

文艺复兴时期:BitKeeper——Sun的内部管理工具,Linux的内核代码2002年也用这个工具,其实,很多开源工程都在用这个工具,2005年这个工具的东家BitMover对大家对BitKeeper逆向工程很不满,于是停止支持开源,于是出现了Git。

Git的第一个版本是Linux之父Linus Torvalds亲手操刀设计和实现的(据说只用了一个周末),Linus不仅仅给出一个原始设计(简单的、干净的、天才的),同时,他也用自己那独一无二的风格催生了这个项目(请参看: http://codicesoftware.blogspot.com/2007/05/linus-torvalds-on-git-and-scm.html)。

在Linus介绍Git的著名的演讲中,他强烈地批评(好吧,应该算是侮辱)了CVS,SVN,和Perforce:“Subversion是史上最毫无意义的项目,从项目开始就是这样了”,“如果你喜欢CVS,那么你现在应该在某个精神病研究中心或是别的地方”,“别在用Preforce了,它是十分糟糕和可悲的,这绝对绝对是真的”。无论是反对还是喜欢,Linus的确是改变了历史——中世纪已经过去了,现在的世界由分布式系统主宰,以及消除 branch和merge的恐惧。

Git 基于 DAG 结构 (Directed Acyclic Graph),其运行起来相当的快。在Git发布后的来年,世界上所有的大型的开源项目全部从Subversion迁移到了Git上,www.github.com真是很大,这可能是这具星球上最强大最牛最酷的SCM系统了。Git可能并不是最简单的,但它一定会是未来十年的主流。(有空读读这本书——Git Internals

Mercurial (Hg) 第一次出现在2005年4月,也是因为BitKeeper不免费了。Hg可以和Git在一起使用,见:http://mercurial.selenic.com/wiki/HgGit。但是Hg和Git在设计上不一样,他们对提交/变更的概念是一样的,只不过Git用tree来实现,而Hg则是用扁平的文件和目录来实现(revlog),设计细节可参看:http://mercurial.selenic.com/wiki/Designhttp://mercurial.selenic.com/wiki/DeveloperInfo

Darcs (Darcs Advanced Revision Control System)是另一个让你摆脱Subversion和CVS的工具,2002年开始,今年是2.5版。它的优势是性能,以及他与众不同的历史版本管理 ——管理patches而不是snapshot(提交/修改),当然,这样一来,历史改变看上去很不好懂。

Bazaar (bzr) 是另一个开源的 DVCS,它试图给SCM的世界里带来一些新的东西。其由Canonical开发(Ubuntu的那个公司),在2008年成为GNU。

Plastic在2006年出现,强力地支持branch和merge,其还提供了强大的图示,包括3D的版本树,Plastic主要是为了让中等开发团队使用,介于大型的团队(ClearCase)和小型的团队(Subversion)之间。

Team Foundation Server (TFS),微软的新一代SCM工具,主要是为了VSS的失败负责,但是他还不是版本管理上还是很强,只不过,他集成了一大堆各种各样的工具,比如:issue tracking,test management等。
  • 大小: 116.3 KB
来自: 酷壳
15
0
评论 共 9 条 请登录后发表评论
9 楼 niko7 2012-02-08 16:40
不侮辱别人可以让他更高尚一点。我支持Linux,也支持SVN和git。
8 楼 wudiju 2010-11-24 22:52
P4很好用
7 楼 flamenco 2010-11-21 10:37
从开发到现在,用过的版本管理主要有以下几种:
按接触先后顺序:CVS,SVN,VSS
按使用时间长短:SVN,CVS,VSS
按个人爱好程度:SVN,CVS
个人推荐还是SVN,毕竟用着用着,不用比就晓得哪个用着舒服了,最近又了解一下,GIT也许确是不错,有空也了解一下,说不定也会喜欢上的.
6 楼 weigangcn 2010-11-19 09:11
SCM用得再NB,不代表里面的代码也NB。
5 楼 diggywang 2010-11-19 09:00
适合自己的就是最好的,我之前5年一直用cvs,没出过大问题,后来用svn,也还行。
4 楼 aws 2010-11-19 08:43
SVN还是很强的拉
3 楼 黑暗浪子 2010-11-19 05:12
居然clearcase是在cvs后面出现的。当初我使用cvs时候觉得比clearcase棒多了。后来用svn也觉得很不错。可惜很多小朋友对svn使用不佳,经常上传冲掉别人的工作成果。而且教过很多次都教不会。这下好了,git的出现应该解决了这样的问题。但是又出现另外一个问题,那就是git到现在在中国IT公司中使用率还是很低。我强烈主张用git!未来5年,java开发人员一定要学会并且擅长使用git。否则可真是out了。
2 楼 hintcnuie 2010-11-18 15:53
没有Jazz~~~
1 楼 guoxu1231 2010-11-18 14:12
搞那么复杂干神马   Subversion不挺好的么

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • delphi反编译工具

    著名的delphi反编译工具,带源码,dede3.5

  • delphi反编译ded逆向工程和协议分析 lgx

      最近小区宽带,要求装一个他们的客户端,并且一直跑着这个客户端才能上网,非常不爽。同时鉴于将近两年没做逆向分析了,正考虑找东西练练手,正好这个东西送上门来,上海高等研究院筹信息科学与技术研究部招聘启事c语言编程软件视频。估计不难,就它啦!:)   先明确一下目标:   Ø分析出这个客户端是如何工作的。   Ø自己写一个客户端代替它,最好能做成Windows服务方便使用。   Ø最后研究有...

  • 反编译Delphi(完整版)

    第一节   关于反向工程(About Reverse Engineering)       反编译?反向?解密?(Decompilation? Reverse? Cracking?)        简单的说,反编译是编译过程的反转:把一个可执行文件翻译为更高级语言。假如你丢失了你的Delphi工程的源程序而只有可执行文件:如果源程序已不可得则反向工程(反编译)是有用的。

  • 推荐开源项目:IDR - 交互式Delphi反编译器

    推荐开源项目:IDR - 交互式Delphi反编译器 项目地址:https://gitcode.com/crypto2011/IDR 1、项目介绍 IDR(Interactive Delphi Reconstructor)是一个专用于Windows32环境的Delphi语言编写的可执行文件(EXE)和动态库(DLL)的反编译器。这个工具设计的主要目标是服务于开发反病毒软件的企业,同时也为那些希望找...

  • 【转】软件反编译的方法

    作为一名程序员,当遇到做的很好、有借鉴意义的软件时,总是忍不住要看看人家代码是怎么写的,是怎样做到这样强大的功能的,但往往我们并不知道软件是谁写的,也就没办法与软件作者进行沟通了,那是不是就没有办法达成我们学习进步的美好愿望呢?其实,办法是有的,软件反编译就是一个很好的办法,但这里笔者并不建议大家用这样的办法来盗版别人的软件,学习借鉴倒是可以的。 工具/原料 PEiD、

  • delphi 反编译工具

    此工具可以成功反编译delphi源文件代码,尽可能的查找反编译的内容

  • delphi反编译三剑客工具

    Delphi程序 一、 IDR (piblic version) IDR (Interactive Delphi Reconstructor) , Delphi反汇编利器,不断更新中。官方主页:http://kpnc.org/idr32/en/download.htm 二、 Delphi Decompiler v1.1.211b Delphi反编译工具 三、 DeDe 3.5原版 反Delphi、 C++ bulid。(DeDe3.2004源码下载) DeDe3.50.04 Fix加强版 DEDE 3.50.4的修改版(超强版:P) by DarkNess0ut 01.修改了Title和ClassName "DeDe"->"DarK",绝大部分的Anti检测都没有用了 02.DIY原DEDE,使得可以反汇编得到非标准程序的Forms格式和Procedures的事件 03.直接反汇编功能的选项 04.增加对特殊处理过的PACKAGEINFO的Uint List的显示 05.修改原有的"Open With DEDE"的注册键错误&BUG;,可以使用右键运行DEDE反汇编Delphi/BCB 06.去处NAG显示 07.修复原有Dump Active Process的BUG 08.Enable Dump按钮 09.修复拖放处理程序时,确认对话框的BUG! 10.修复Forms下将DFM保存为RES文件的BUG! 11.Enable Procedures下右键的Analize Class功能 12.修复Forms下DFM的"Open With NotePad"功能 13.heXer提供修复反汇编引擎的代码,主要是解决了反汇编的错误

  • 超强的反编译delphi的工程

    自用的超级强大的辅助分析工具,专门针对delphi应用,辅助od分析和patch。

  • OD 实验(十二) - 对一个 Delphi 程序的逆向

    程序: 运行程序 界面显示的是未注册 点击 Help -> About 点击 Use Reg Key 这里输入注册码 用 PEiD 看一下 该程序是用 Delphi 6.0 - 7.0 写的 逆向: 用 OD 打开程序 右键 -> 查找 -> 所有参考文本字串 然后右键 -> 查找文本 搜索 这里有个是 a...

  • Delphi 各种组件的知识介绍及其安装方法

    组件提供的方式不同,安装的方法也不同,下面就目前常见的各种形式的组件的安装方法介绍一下。     1.、DCU文件类型的组件                  DCU文件由单元文件(.pas)或者包文件(.dpk)等编译时产生的中间文件,即编译文件(相当.obj 文件),

  • peid逆向记录

    【文章标题】: peid逆向记录【文章作者】: layper【作者邮箱】: layper2002@yahoo.com.cn【作者主页】: www.sy135.com【下载地址】: 自己搜索下载【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!----------------------------------------------------------------------

  • 逆向工程 反编译_逆向工程(反编译)Delphi应用程序

    逆向工程 反编译 Read the full article to learn how to Decompile a Delphi application. 阅读全文 ,了解如何反编译Delphi应用程序 。 Related: 有关: Embeding Resources in Delphi program's EXE 在Delphi程序的EXE中嵌入资源 Dynamic Link ...

  • [delphi]修改indy源码后重新编译

    虽然indy有一身的毛病,但是一般情况下使用起来还是多方便的。 今天在做一个使用到indy的程序的时候,发现无论你怎么修改idhttp.request.accept-encoding,他都会在其后添加一个值 identity,追查了下源码,发现indy在源码中强行的添加了它,虽然说修改他的意义并不是很大,但是被强迫的感觉真心不好,正好也借此文说明一下,如何重新编译并更新编译过的组件单元(.dcu

  • Delphi中的第三方控件安装

    由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组 件的安装方法介绍一下。 1只有一个DCU文件的组件。DCU文件是编译好的单元文件,这样的组件是作者不想把源码公 布。一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会 出现错误。也正是因为没有源码,给使用者带来了不便,...

  • delphi反编译工具 IDR (Interactive Delphi Reconstructor)

    delphi反编译工具 IDR (Interactive Delphi Reconstructor)

  • delphi2-delphi2010 全支持 dcu 装换 pas

    delphi2-delphi2010 全支持 dcu 装换 pas -------------------------------------------------------------------------------- Project Dcu2Pas Version 1.3 Purpose Decompile a D2-D7, K1-K3's dcu(dpu) file to Delphi source as origin as possible, without or with minimal modifications, then recompile to new one under other Delphi versions Author Nengwen Zhuo(卓能文) Homes http://soarowl.uhome.net, http://www.websamba.com/soarowl, http://soarowl.0catch.com Emails soarowl@yeah.net, soarowl@sina.com.cn Released 2003-02-10 Lastest home/dl/Dcu2Pas.rar(zip) FOR RESTORE YOUR LOST SOURCES AND OPTIMIZE YOUR CODES ONLY!!! -------------------------------------------------------------------------------- This project is in very early stage, no document yet. To see some features, reference my test cases file -- test.pas and the output file test.int, please. The output maybe more clear organised than source files!!! For further development, any suggestions and ideas are welcome. I have no time to update my homepages for a long time ;-) -------------------------------------------------------------------------------- Usage Run Dcu2pas, set properly options, select a desired dcu file double click to decompile it -------------------------------------------------------------------------------- Features - Supports the following type declarations and their typed consts: * Type redeclarations, for example: type MyTypeString = type String; * All integer types(Byte, Cardinal, Int64, Integer, Longint, Longword, Shortint, Smallint, Word) * All char types(AnsiChar, Char, WideChar) * All boolean types(Boolean, ByteBool, LongBool, WordBool) * Enumerated type, subrange of enumerated type and set of enumerated type For examples: type Size = (Small = 5, Medium = 10, Large = Small + Medium); TMySize = Medium..Large; type TEnumSet = set of (Club, Diamond, Heart, Spade); const vcSet4: TEnumSet = [Club,Spade]; * All real types(Comp, Currency, Double, Extended, Real, Real48, Single) * All string types(AnsiString, ShortString, String, String[XX], WideString) * Array type(with/without packed keyword), dynamic array and multidimensional dynamic array * Set type * Record type, with any variant parts in records. But if a record has any variant parts in it, the typed const may can't correctly decompile * Function/procedure type declaration - Support threadvar - Support resourcestring - Support class type, interface inheritation - Support object type - Support interface - Code decompiler to BASM, then a decpompiled file can recompile under other Delphi versions... - Code decompiler to Object-Pascal. I have some ideas, but I have no time, maybe in near future, I will code for it! -------------------------------------------------------------------------------- Update history Legend: - Bug fixed * Algorithm enhanced + New featuer added Ver2.0 Ver1.3 2003-02-10 * Code decompiler redesigned * Partly support D7 Ver1.2 2002-07-28 + Delete procedure, contructor, destructor frame 2002-07-18 + Procedure variable const + Now can distinguish: vc1: PChar ='test'; vc2: PChar = @vc1; 2002-05-28(Ver1.1) + Now correctly process interface properties and argument default values + Support resources, for example: {%R *.dfm}, {$R *.res} 2002-05-26 + Support default arguments + Support interface 2002-05-25 + Support object type + Support resourcestring + Support threadvar + Support function/procedure type 2002-05-24 + Support file type + Support set of enumerated type const decompiler + Support enumerated type const decompiler + Support subrange of enumerated type + Support dynamic array type - Array [enumerted type] of ... - Bugs in [packed] array fixed - Bugs in [packed] record fixed - Bugs in enumerated type fixed - Bugs in classify interface and implement declarations fixed

  • Delphi反编译

    Delphi反编译2008-04-12 03:38<br />转自http://blog.csdn.net/eagletian/ 不知道是不是博主翻译的。感觉好像后面还有很多东西。<br />反编译Delphi<br />第一节 关于反向工程(About Reverse Engineering)<br />反编译?反向?解密?(Decompilation? Reverse? Cracking?)<br />简 单的说,反编译是编译过程的反转:把一个可执行文件翻译为更高级语言。假如你丢失了你的Delphi工程

Global site tag (gtag.js) - Google Analytics