버전 관리 시스템, 분류, 일반 버전 관리 시스템의 개념 중 하나 (CVS, SVN, 비트 키퍼, 힘내 등)

 무엇

  버전 관리 시스템 (버전 제어 시스템, VCS)가 함께 작업에 개발자의 소프트웨어 팀을 돕고, 자신의 작품의 전체 역사를 보관 소프트웨어입니다.

이유

우리의 실제 개발 과정에서 종종 이러한 필요 또는 문제가

  1. 우리는 새로운 코드를 사용하고 시험 중에 확인, 원래의 코드에 영향을 미칠 수없는 것, 테스트 검증 경우 아무 문제가없는 프로그램이 이미 새로운 기능을 발표 추가해야합니다. 우리는 소스 코드의 여러 복사본을 백업 할 수있는 일반적인 방법이어야한다. 그래서 유일한 장점을하는 것은 간단하지만, 특히 쉽게 실수를하는 것입니다.
  2. 실제 프로젝트 개발은 기본적으로 여러 사람이 협업, 하나 이상의 사람에서 코드를 작성할 때, 그것은 코드가 문제로 통합이 포함됩니다.

역사 카테고리

  버전 관리 시스템의 역사를 통해, " 버전 제어함으로써 예 에는,"버전 관리에 관한 그의 책에서 에릭 싱크의 책은 크게 버전 관리의 역사는 세 개의 세대로 나눌 수 있습니다, 말하기, 분류 :

세대 네트워크 운영 동시성
첫 번째 세대 아니오 하나 개의 파일 잠금 RCS, SCCS
두 번째 세대 집중식 다중 파일 제출 합병 전 CVS, SourceSafe를, 서브 버전, 팀 파운데이션 서버
3 세대 분산 변경 모음 제출 된 합병 이전 바자, 힘내, 의욕

" 버전 제어함으로써 예는 "저자의 웹 사이트에 전자 (PDF 나 EPUB)에서 직접 다운로드 할 수 있습니다

첫 번째 세대

  제 세대 버전 관리 시스템이라고도 제어 시스템의 로컬 버전 . 잠금으로써 동시 실행 순서로 변환된다. 만 파일을 처리 한 사람. 다음과 같이 구체적인 프로세스는 다음과 같습니다 첫째, 우리는 서버, 사용자 친화적 인 업로드 또는 다운로드 파일에 파일을 넣어한다 둘째, 파일 수정 시간에 원하는 사람, 당신은 다른 사람이 수정할 수 없습니다 수 있도록, 체크 아웃 명령을 통해이 파일 잠금을 둘 필요 ; 수정이 완료되면 마지막으로, 잠금은 서버 저장 영역, 지침, 양식의 새 버전을 체크인을 통해 공개 될 필요가있다.
  제 세대 버전 관리 시스템 주로 RCS, SCCS (1972 년 공개)와 DSEE (심방은 ClearCase가 선행되는 것으로 간주된다). 현재, 여전히 몇 가지 프로젝트를 사용!

비관적 잠금
  데이터마다 액세스, 데이터에 대한 우려는 데이터를 얻을 때마다 있도록 다른 사람을 수정되지 않습니다 자신의 사용 과정에서 데이터를 확인하기 위해 잠금 상태가됩니다 수정 사용 완료 후 데이터의 잠금을 해제합니다. 데이터가되기 때문에 다른 스레드를 읽고 대기 중에 잠겨 데이터를 기록합니다.

두 번째 세대

  2 세대 버전 관리 시스템이 호출됩니다 중앙 집중식 버전 제어 시스템 (중앙 집중식 버전 제어 시스템의 CVCS) , 동기 변경의 관대이지만, 그들이 제출 허용되기 전에 사용자가 현재 버전에 통합해야하는 분명한 한계가있다 일.
그림 삽입 설명 여기
중앙 집중식 버전 관리 시스템에서, 그림에서 볼 수있는, 서버 트림 방귀 경우, 그래서 모든 개발자는 절망에 볼 수있다! 프로젝트의 관리를위한 SVN은 중앙웨어 하우스 서버에 의존하기 때문에! 우리의 변화는 중앙웨어 하우스 서버에 제출해야합니다.
  2 세대 버전 관리 시스템을 중심으로 CVS, SourceSafe를, 서브 버전, 팀 파운데이션 서버, SVK.

낙관적 잠금
  데이터마다 액세스, 데이터에 대한 걱정하지 때마다 있도록 데이터가 고정되지 않습니다 얻을, 수정하지만, 필요 데이터를 업데이트 할 때 데이터가 다른 사람을 수정되었는지 여부를 확인합니다. 데이터가 다른 스레드에 의해 수정 된 경우 데이터가 다른 스레드, 데이터 업데이트에 의해 수정되지 않은 경우, 데이터 업데이트가 수행되지 않습니다. 데이터가 고정되어 있지 않기 때문에, 데이터가 다른 스레드의 판독 및 기록 동작 동안 수행 될 수있다.
  낙관적 잠금 장치는 일반적으로 버전 번호 또는 CAS 알고리즘을 사용합니다.

3 세대

  3 세대 버전 관리 시스템이라고 분산 버전 관리 시스템 (분산 버전 관리 시스템의 DVCS) 결합 별도로 제출 있습니다. 각 사용자의 컴퓨터가 완전한 데이터웨어 하우스를해야합니다에, 어떤 네트워크는 여전히 사용할 수 없습니다.
그림 삽입 설명 여기
그림에서 볼 수있는, 분산 버전 관리 시스템은 각각의 개발자의 개인 창고를 동기화, 서버 저장소가있을 수 있습니다! 분산 버전 관리 시스템에서 로컬 각 참가자는 전체 창고를해야합니다. 네트워크를 사용할 수있을 때 적시 서버 충돌, 우리는 여전히 힘내을 사용할 수 있습니다 (로컬웨어 하우스 관리는 우리의 코드 만), 서버는 동기화 할 수 있습니다!
  3 세대 버전 관리 시스템 주로 바, 힘내, 의욕, 비트 키퍼 ,, 모노톤. 현재, 제 3 세대 버전 제어 시스템은 추세 (특정로드 코드는 2016 년에 분석 보고서 완료 볼을 따라 큰 강과 호수되었습니다 2016 년 버전 제어 시스템의 인기를 )!

RCS

  修订控制系统(Revision Control System,RCS) 是第一代的版本控制系统。它是一组 UNIX 命令(暂时没有找到有 UI 界面的软件),允许多个用户开发和维护程序代码或文档。
  RCS 于 1982 年由 Purdue University 的 Walter F. Tichy 首次发布。 它是当时流行的源代码控制系统(SCCS,它几乎是第一个版本控制软件工具,早期 Unix 开发人员于1972年开发)的替代工具。 RCS 目前由 GNU 项目维护。GNU 官网介绍:https://www.gnu.org/software/rcs/;项目维护地址:http://savannah.gnu.org/projects/rcs/
  目前,我们可以从GNU RCS 的项目地址: http://savannah.gnu.org/projects/rcs/ 或者 Purdue University 的 RCS 官网 https://www.cs.purdue.edu/homes/trinkle/RCShome/ 下载最新版本的可执行程序、源码、文档。其中,GNU 官网只有源代码,没有预编译的可执行程序。Purdue University 的 RCS 官网倒是有一个旧版本的 Windows 平台的可执行程序。
그림 삽입 설명 여기

CVS

  并发版本系统(Concurrent Versions System,CVS)是最初的第二代版本控制系统。大约十年间,它是最为流行的版本控制系统,直到 2000 年被 Subversion 所取代。CVS 的安装教程可以在其项目主页 上找到。由于 CVS 是集中式版本控制系统,所以它有客户端和服务端之区分。但要开始使用 CVS 的话,即使只在你的本地机器上使用,也必须设置 CVS 的服务端。
  CVS 最早是由一位名叫 Dick Grune 的荷兰科学家在 1986 年开发的,当时有一个编译器项目,他正在寻找一种能与其学生合作的方法。我在英文网站 http://dickgrune.com/Programs/CVS.orig/#History 中找到如下一段话:

I created CVS to be able to cooperate with my students, Erik Baalbergen and Maarten Waage, on the ACK (Amsterdam Compiler Kit) C compiler. The three of us had vastly different schedules (one student was a steady 9-5 worker, the other was irregular, and I could work on the project only in the evenings). Their project ran from July 1984 to August 1985. CVS was initially called cmt, for the obvious reason that it allowed us to commit versions independently.

  Grune 于 1986 年 6 月 23 日公开发布了该代码。CVS 最初仅仅只是一个包装了 RCS( 修订控制系统(Revision Control System)) 的 Shell 脚本集合。最终演变成当前版本的 CVS 的代码始于 1989 年 4 月的 Brian Berliner 的贡献,后来由 Jeff Polk 和许多其他贡献者提供帮助。 Brian Berliner 撰写了一篇论文,介绍了他对 CVS 程序的改进 - 该程序描述了该工具是如何在 Prysma 内部扩展和使用的。 1990 年 11 月 19 日,CVS 1.0 版被提交给自由软件基金会进行开发和分发。

关于 CVS 的使用可以参考这篇文章:https://zhuanlan.zhihu.com/p/51792519

VSS

  VSS 的全称为 Visual Source Safe,是美国微软公司出品的版本控制系统。兼容 Check out-Modify-Check in(独占工作模式)与 Copy-Modify-Merge(并行工作模式)。它也属于集中式版本控制系统。
  VSS 通常与微软公司的 Visual Studio 产品同时发布,并且高度集成。VSS 使用文件系统作为存储方式,每次版本变更时就需要大量地读写硬盘。这也是 VSS 最广受垢弊的缺点。VSS2005 拥有Web 访问功能,不再与 Visual Studio 同时发布。
  2008 年,微软发布了 Team Foundation Server 的项目生命期管理工具,以替代 VSS。其不仅仅包含版本控制系统,还包括一系列的项目生命期管理工具。此中使用的还是集中式版本控制系统。

  • Team Foundation Server:本地版本,用户安装使用!
  • Team Foundation Service:云端版本,使用微软账户登录!

  2019 年,微软发布了全新的 Azure DevOps Server。这不仅仅是个改名,整个软件的架构都进行了重新的调整!有了它,我们就可以使用一系列的项目生命期管理工具。版本控制系统仅仅是其中的一小部分。注意其中的版本控制系统是基于 Git 的分布式版本控制系统。

  • Azure DevOps Server:本地版本,用户安装使用!是 Team Foundation Server 的升级版本。
  • Azure DevOps Service:云端版本,使用微软账户登录!是 Team Foundation Service 的升级版本。

SVN

  SVN(Subversion 的缩写)是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统。SVN 由 CollabNet 公司于 2000 年资助并发起开发,目的是创建一个更好用的版本控制系统以取代 CVS。
  2000 年 2 月,CollabNet 联系了 Open Source Development with CVS(Coriolis, 1999)的作者 Karl Fogel,问他是否愿意为这个新项目工作。这时 Karl 已经在和他的朋友 Jim Blandy 讨论一个新的版本控制系统的设计。他不仅已经起好了名字 “Subversion”,而且有了 Subvesion 资料库的基本设计。
  经过 14 个月的编码,在 2001 年 8 月 31 号,Subversion 可以“自我寄生”了。就是说,Subversion 开发人员停止使用 CVS 管理 Subversion 的源代码,开始使用 Subversion 代替。
  2009 年 11 月,Subversion 被 Apache Incubator 项目所接收。2010 年 1 月,正式成为 Apache 软件基金会的一个顶级项目。项目地址:https://subversion.apache.org/,我们可以从中下载源代码、文档,没有预编译的可执行程序。

以下是几款常用的 SVN 客户端图形化软件:

  • TortoiseSVN:开源软件,在 Windows 上非常受到欢迎的一套客户端软件,它与资源管理器集成得相当不错,可以透过资源管理器在文件或目录上用鼠标右键的菜单完成 SVN 的操作。官方网站:http://tortoisesvn.net/
  • SnailSVN:Mac OS X 平台下类似 TortoiseSVN 的图形化 SVN 客户端,可自动标记文件状态,并通过右键菜单提供各种常用 SVN 功能。 网站:https://langui.net/snailsvn/
  • Ankhsvn:将 subversion 的操作集成进 Visual Studio 的 SVN 客户端软件。官方网站:http://ankhsvn.open.collab.net/
  • Subclipse:将 Subversion 的操作集成进 Eclipse 的 SVN 客户端软件。官方网站:http://subclipse.tigris.org/
  • SmartSVN:同时支持 Mac、Linux、Windows。是一款收费软件。

BitKeeper

  BitKeeper 是一套 BitMover 公司开发的分布式版本控制软件,它曾是一款专有软件。BitKeeper 是最初的分布式源代码控制系统。BitKeeper 的许多概念取自 TeamWare(Larry McVoy 在 Sun 公司时开发的产品)。
  BitMover 公司 CEO Larry McVoy 与 Linus 曾是好友, Larry 说服 Linus 在内核开发中使用 BitKeeper。而 BitKeeper 在免费使用的许可证中加入很多限制条件,惹恼了内核开发者,最终促使 Linus 开发出了毁灭 BitMove r的 Git。

2016 年 5 月 11 日,BitKeeper 宣布以 Apache 2.0 许可证开源。

Mercurial

  Mercurial 是跨平台的分布式版本控制软件,主要由 Python 语言实现。Mercurial一开始的主要运行平台是 Linux,现在 Mercurial 已经移植到 Windows、Mac OS X 和大多数的类 Unix 系统中。Mercurial 主要由命令行程序组成,现在也有了图形用户界面。
  Mercurial 的创建者和主要开发人员是 Matt Mackal。其源代码采用GNU通用公共许可证第二版为授权,确保了Mercurial是一个自由软件。

Git

  在 Linux 开源的初期,Linux 开源项目的代码是 linus 本人通过 linux 命令 diff 和 patch 两条命令手动完成。随着 Linux 代码越来越壮大,靠 Linus 一个人来手动合并已经不现实。2002 年,Linus 选择了一个商业版本控制系统 BitKeeper 作为 Linux 内核的代码管理工具(BitKeeper 的开发商 BitMover 授权 linux 社区免费使用)。但是,免费使用是有很多的限制的,因此 linux 社区的大佬开始破解 BitKeeper。其中,samba 的作者 andrew 破解成功了。但是被 BitMover 公司发现,收回免费使用权。
  迫不得已,Linus 选择了自己开发一个分布式版本控制工具以替代 BitKeeper。linus 闭关一个月,写出了 Git。在一个月后,Git 成功接管了 Linux 社区的版本控制工作,并且开始开源。维基百科中,有如下历史记录:

  • 2005 年 4 月 3 日,开始开发 Git。
  • 2005 年 4 月 6 日,项目发布。
  • 2005 年 4 月 7 日,Git 就可以作为自身的版本控制工具了。
  • 2005 年 4 月 18 日,发生第一个多分支合并。
  • 2005 年 4 月 29 日,Git 的性能就已经达到了 Linus 的预期。
  • 2005년 6월 16일는 리눅스는 리눅스 커널 소스 코드의 유지 보수에 이미 다음, 힘내을 발표 2.6.12 커널.

  2005 년 7 월 26 일 리누스는 망할 놈의 Junio ​​C 하마노의 유지에 또 다른 주요 원인으로 힘내에서 은퇴했다.

리누스 토발즈가 비트 키퍼는 아파치 2.0 라이선스로 오픈 소스에 발표 11 년 후 2016에서 망할 놈의 분산 버전 관리 시스템을 개발했다.

참고

  1. https://blog.51cto.com/12805107/2089757
  2. https://www.imooc.com/article/details/id/44217
  3. https://softwareengineering.stackexchange.com/questions/35074/im-a-subversion-geek-why-should-i-consider-or-not-consider-mercurial-or-git-or
  4. https://www.jianshu.com/p/a46f1cdada53
  5. https://gotgit.readthedocs.io/en/latest/index.html
  6. https://blog.csdn.net/qq_36647038/article/details/84022363
  7. http://www.worldhello.net/gotgit/

: 재현 https://blog.csdn.net/ZCShouCSDN/article/details/100590313

 

추천

출처www.cnblogs.com/boyYu/p/12145507.html