SVN、Git区别

  • Git:分布式的(Decentralized)版本控制软件
  • SVN:中心化的(Centralized)版本控制软件

Git

  • 优点:
    • 去中心化
      • 避免单点故障(服务器下线)导致Repo无法访问;
      • 不需要服务器也可完成大多数功能;
      • 可以用本地Git Repo初始化服务器上的Git Repo;
    • Merge/Rebase流程完善
      • 适合大量成员共同在单个Repo内开发;
  • 缺点:
    • 学习曲线陡峭,非计算机专业人士入门困难;
    • 即使有Git LFS,Git对大文件的支持仍然一般;
    • 权限控制粒度不细
      • 一个用户能访问Repo,就能访问Repo中的所有文件和历史;
      • 一个用户Clone了完整的Repo,就能将它放到某个Git服务器上开始分析和分发;

SVN

  • 优点
    • 原生支持大文件版本管理,性能高;
    • 功能简单直接,入门难度低;
      • 各SVN GUI软件更加完善、人性化
    • 与Git的正向Delta不同,SVN采用反向Delta,降低存储占用、提升拉取性能;
    • SVN本体十分稳定,更新及出现安全问题概率低,有利于进行二次开发;
    • 权限控制完善
      • 支持用户名+密码、用户名+令牌(Token)、LDAP等多种不同认证方式的同时,还可结合Web服务器的功能提供更多验证方式;
      • 可设置用户和用户组,读写权限可精确到Repo下的单个文件
  • 缺点
    • 中心化
      • 服务器出现问题(单点故障)会导致开发无法继续,或数据(提交历史等)永久丢失;
      • 可以改造为“多中心”模式:增加类似“服务器间同步”的功能,或使用特殊的分布式文件系统储存服务端文件;
    • 必须有服务器的存在
      • 即使是本地Repo进行开发,也要启动SVN Server;
      • 失去服务器的情况下操作受限;
      • 大量成员共同在单个Repo内开发时,服务器有持续较高负载;
评论