Help us learn about your current experience with the documentation. Take the survey.

从 CVS 迁移

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

CVS 是一个老旧的集中式版本控制系统,类似于 SVN

CVS 与 Git 的对比

以下列表说明了 CVS 和 Git 之间的主要区别:

  • Git 是分布式系统。而 CVS 是集中式的,采用客户端-服务器架构。这意味着 Git 具有更灵活的工作流程,因为你的工作区是整个仓库的副本。例如,在切换分支或合并时,这减少了开销,因为你不需要与远程服务器通信。
  • 原子操作。在 Git 中,所有操作都是 原子 的,要么完全成功,要么完全失败且不会产生任何更改。在 CVS 中,提交(及其他操作)不是原子的。如果在仓库操作中途被中断,仓库可能会处于不一致的状态。
  • 存储方式。CVS 的变更按文件进行(变更集),而在 Git 中,已提交的文件以其完整形式(快照)存储。这意味着在 Git 中回滚或撤销整个变更非常容易。
  • 修订 ID。由于 CVS 的变更按文件进行,修订 ID 用版本号表示,例如 1.4 反映了某个文件被更改的次数。在 Git 中,项目的每个版本(每次提交)都有通过 SHA-1 给出的唯一名称。
  • 合并跟踪。Git 采用提交前合并的方法,而不是像 CVS 那样的合并前提交(或更新后提交)。当你在准备创建新提交(新修订)时,如果有人在同一分支上创建了新提交并推送到中央仓库,CVS 会强制你先更新工作目录并解决冲突,然后才允许你提交。Git 则不会这样。你先提交,将状态保存在版本控制中,然后合并其他开发者的更改。你也可以让其他开发者进行合并并自行解决任何冲突。
  • 签名提交。Git 支持 为提交签名 以增加安全性和验证,确保提交确实来自原始作者。GitLab 会显示签名提交是否正确验证。

以上部分内容取自这篇优秀的 Stack Overflow 帖子。有关差异的更完整列表,请参阅维基百科关于 比较不同版本控制软件 的文章。

为什么要迁移

CVS 自 2008 年以来没有新版本发布,已经过时。Git 提供了更多工具(如 git bisect),使工作流程更加高效。迁移到 Git/GitLab 对您有以下好处:

  • 更短的学习曲线。Git 拥有庞大的社区和大量教程帮助您入门(请参阅我们的 Git 主题)。
  • 与现代工具集成。迁移到 Git 和 GitLab 后,您可以获得一个开源的端到端软件开发平台,内置版本控制、问题跟踪、代码审查、CI/CD 等功能。
  • 支持多种网络协议。Git 支持 SSH、HTTP/HTTPS 和 rsync 等,而 CVS 仅支持 SSH 和其不安全的 pserver 协议,且没有用户认证。

如何迁移

以下是一些帮助您开始迁移的链接: