版本控制:SVN初体验 | 每日学习记录

174 阅读7分钟

2024-12-11

先引用名言《这是什么VCS啊?感觉不如Git》

可能确实不如吧,无恶意

之前版本控制用的都是Git,今天去新公司看看实习岗位,用的是SVN(subversion),简单记录一下。

用起来感觉和Git差不多。

上手流程

简单记录一下上手流程:

之前用Git的时候,先下载安装了Git,为了方便,又下载安装了一个GUI工具,TortoiseGit,可爱小乌龟。

这次体验SVN的时候,没有先下载SVN,看网上的,直接下载了TortoiseSVN,安装它的时候,貌似是勾选指定安装项,添加command line client tools就可以了,或者直接全选也可以。

好了,现在电脑上有两只可爱小乌龟了,开心o( ̄▽ ̄)ブ

image.png

然后小乌龟直接检出就拉取下来了

emm,后面就没做了,因为对公司工作内容不感兴趣,一行代码没写就走了,提交那些貌似和Git差不多吧。

SVN和Git的对比

然后记录一下SVN和Git的对比吧,方便自己以后回忆

以下为Kimi回答修改而成

SVN(Subversion)和Git是两种流行的版本控制系统(VCS),它们在设计理念、工作流程和功能上有着明显的区别,但也存在一些联系。下面详细介绍它们之间的联系和区别:

联系:

  1. 版本控制的目的

    • 两者都旨在帮助开发者管理代码变更,跟踪文件的历史更改,以及协调多人协作开发。
  2. 变更集(Commit)

    • SVN和Git都使用变更集(commit)来记录文件的修改。每次提交都包含了一组文件的变更。
  3. 分支和标签

    • 两者都支持创建分支和标签,以便于管理不同的开发线和发布版本。
  4. 合并和冲突解决

    • SVN和Git都提供了合并不同版本代码的功能,并在合并时处理冲突。
  5. 社区和工具支持

    • 两者都有庞大的社区和丰富的工具支持,包括图形界面客户端、服务器软件、集成开发环境插件等。
  6. 跨平台支持

    • 两者都支持多种操作系统平台。

区别:

  1. 集中式 vs 分布式

    • SVN:集中式版本控制系统,所有版本数据都存储在一个中央服务器上。
    • Git:分布式版本控制系统,每个开发者的本地都有一个完整的版本库。
  2. 数据存储方式

    • SVN:存储文件的变更差异。
    • Git:存储文件的快照,每次提交都是项目状态的完整记录。
  3. 分支管理

    • SVN:分支和标签的创建和合并操作相对较慢,不够灵活。
    • Git:提供了非常强大和灵活的分支管理功能,分支的创建和合并都非常快速和简单。
  4. 网络依赖性

    • SVN:大多数操作都需要网络连接,依赖中央服务器。
    • Git:允许在本地进行大部分操作,网络连接主要用于同步远程仓库。
  5. 权限控制

    • SVN:权限控制通常基于路径,较为简单。
    • Git:可以通过各种工具(如GitLab、GitHub等)实现更复杂的权限控制。
  6. 操作的原子性

    • SVN:提交是原子性的,要么全部提交成功,要么全部失败。
    • Git:提交也是原子性的,但因为其分布式特性,开发者可以在本地进行多次提交,然后再一次性推送到远程仓库。
  7. 数据一致性

    • SVN:中央服务器保证数据的一致性和完整性。
    • Git:每个本地仓库都是完整的,可以独立于其他仓库存在,但需要定期同步以保持数据一致性。
  8. 备份和恢复

    • SVN:备份和恢复操作通常在中央服务器上进行。
    • Git:可以在任何一个本地仓库上进行备份和恢复操作。
  9. 工作流程

    • SVN:通常采用线性的工作流程,如从主分支开发,然后合并回主分支。
    • Git:支持多种工作流程,如Git Flow、GitHub Flow等,更加灵活。
  10. 性能和效率

    • SVN:在处理大量小文件或大文件时可能效率较低。
    • Git:在处理小文件和大项目时通常性能更好,尤其是在分支和合并操作上。

选择使用SVN还是Git,通常取决于团队的工作流程、项目需求以及个人偏好。Git因其分布式特性和强大的分支管理功能,在现代软件开发中更为流行。

以下为GPT回答修改而成

SVN 和 Git 的联系与区别

SVN(Subversion)和 Git 是两种常用的版本控制系统,尽管它们的目标相同——管理和跟踪代码变更,但在设计理念、实现方式和功能特性上有很大不同。

一、联系

  1. 版本控制的核心功能相同
    • 两者都能记录文件的历史版本、支持多人协作开发。
    • 都提供了类似的基本操作,比如提交(commit)、更新(update/pull)、回滚(revert/reset)等。
    • 都允许用户查看历史记录和代码差异。
  2. 支持多平台
    • SVN 和 Git 都可以运行在多种操作系统(Windows、Linux、macOS)上。
  3. 协作开发工具
    • 两者都可以与 IDE(如 IntelliJ IDEA、Eclipse)和开发平台(如 GitHub、GitLab)集成,提升协作效率。
  4. 分支管理功能
    • 都支持分支(branch)的管理,但实现方式和效率不同。

二、区别

  1. 架构与设计理念

    • SVN: SVN 是集中式版本控制系统(Centralized Version Control System,CVCS),版本库存储在中央服务器上,所有开发者都需要通过网络与中央服务器交互。

      优点:

      • 数据集中管理,适合团队强管理模式。
      • 部署简单,易于上手。
    • Git: Git 是分布式版本控制系统(Distributed Version Control System,DVCS),每个开发者的本地都有一个完整的代码仓库副本。

      优点:

      • 可离线操作,开发者在无网络环境下也能查看历史记录、创建分支、提交更改等。
      • 分布式架构提高了安全性,服务器崩溃时本地副本可恢复。
  2. 分支管理

    • SVN: 分支是一个独立的目录(需要手动复制整个目录作为新分支),分支的操作比较耗时,合并分支时容易产生冲突。
    • Git: Git 的分支是轻量级的,创建分支非常快,合并分支的效率也很高。Git 提供了丰富的分支管理命令,如 git branchgit merge
  3. 速度

    • SVN: 操作速度依赖于网络,因为几乎所有操作都需要与服务器交互(如提交、更新)。
    • Git: 本地操作速度非常快,因为大部分操作只需要访问本地存储(如提交和查看历史记录)。
  4. 存储方式

    • SVN: 记录的是每次提交的文件快照(Snapshot),即版本之间的差异。
    • Git: 记录的是项目的整个快照,使用哈希值标识每个提交,内容被压缩后存储。
  5. 协作方式

    • SVN: 需要开发者始终与中央服务器保持同步,依赖网络。
    • Git: 支持分布式协作,开发者可以在本地完成工作后再推送到远程仓库。
  6. 学习曲线

    • SVN: 由于功能较为单一,上手难度较低,适合初学者。
    • Git: 功能强大,但命令复杂,对新手有一定的学习成本。
  7. 社区和工具支持

    • SVN: 使用人数逐渐减少,社区活跃度较低,扩展性不足。
    • Git: 已成为主流版本控制工具,拥有庞大的社区支持和丰富的插件。

三、总结对比表

特性SVNGit
架构集中式(CVCS)分布式(DVCS)
分支分支独立目录,操作慢分支轻量级,操作快
网络依赖依赖网络支持离线操作
速度操作依赖服务器,速度较慢本地操作为主,速度快
学习曲线简单易学功能多,命令复杂
社区支持较少非常活跃

四、适用场景

SVN 适用场景

  • 小型项目或初学者团队,代码库结构简单,开发者人数较少。
  • 需要统一管理和严格权限控制。

Git 适用场景

  • 大型团队项目,特别是需要频繁创建和合并分支的项目。
  • 分布式开发场景,如开源项目。