zoukankan      html  css  js  c++  java
  • 版本控制工具演化、对比、总结

    方面 Perforce ClearCase SVN Git
    一句话总结 企业级版本化产品开发 企业级版本化产品开发 轻量级 分布式
    简述
    特色功能
    可视化
    平台

    0. 演化

    • “人肉”版本管理
      • 通过在文件命名上增加自定义版本号、描述的方式来维护多个版本的文件/文件夹
    • 简单的集中式版本管理
      • 比如VCS
      • 改进
        • 实现了同一文件或文件夹的版本控制、历史、回退功能
      • 仍存在的问题
        • 但客户端要实时与服务端通信,同一文件只有一个人可以checkout进行修改,然后再checkin
    • 复杂的集中式版本管理
      • 如SVN、CVS
      • 改进
        • 不再锁文件,大家都可以checkout后修改,但要有合并的功能
        • 支持分支功能,可以多版本并行
      • 仍存在的问题
        • 大家要抢着提交,但还是可能错过别人的更新,导致没有先合并而覆盖别人的代码
    • 分布式版本管理
      • 如Git
      • 改进
        • 客户端不再需要实时和服务端通信,支持先本地提交,避免覆盖别人的改动
        • 支持审批功能
    • 社交化分布式版本管理
      • 如Github

    1. Perforce(P4)

    • 优点
      • 基于Changelist管理一次性对多个文件的提交,可以方便得查看哪些文件是一起提交的
      • 未Checkout的文件是只读状态(虽然可以手动改),IDE插件可以自动Checkout
      • 可以通过全部checkout再全部revert unchanged files来避免提交checkout但未改变内容的文件,不利于以后的问题排查
      • Workspace的功能比较强大,支持写映射脚本
    • 缺点
      • checkout、submit等操作都需要随时联网
      • 没有ignore功能?

    2. ClearCase

    • 优点
      • 可集成BeyondCompare等工具
      • 未Checkout的文件是只读状态(虽然可以先让它是Hijacked状态,后面再处理),IDE插件可以自动Checkout
      • 可以方便的以图形化的方式查看单个文件或文件夹的Version History
      • View的功能比较强大,可以组合不同VOB、不同分支,支持在ConfigSpec中写脚本
    • 缺点
      • 查看历史时,无法方便得查看哪些文件是一起提交的
      • 不能像Perforce那样revert unchanged files,也就不能避免提交checkout但未改变内容的文件,不利于以后的问题排查
      • checkout、commit等操作都需要随时联网
      • 没有ignore功能
      • 没有递归把一个文件夹下的文件都add to control的功能,要用命令,而且权限不够

    3. SVN

    • 优点
      • 安装、入门使用简单迅速
      • show history既可以方便得查看哪些文件是一起提交的(即基于提交来查看),也可以查看单个文件的提交历史
      • 不需要checkout,也就是本地修改不需要联网
      • 有ignore功能
    • 缺点
      • commit需要联网,相对于Perforce和ClearCase而言本地修改比较省事。
      • 互联网开发(没有特定版本一起release features,有可能好多人在同时开发,测试、合并、上线进度都不同)时,比较麻烦,如果有多步测试分支,每个人总要跳出自己这次的feature所修改的文件、代码来进行一步步合并,容易出错。

    4. Git

    • 优点
      • 分布式(只是有一个中央服务器用来交换代码,作为出版本的标准)
        • 除了push等操作都不需要联网,相互之间影响小。
        • 而且相当于自己有一个clone下来的库,有独自的一套分支、提交历史等,管理比较独立,commit和push也分开了
        • 每个人都有完整的库,安全性高
      • 使用TortoiseGit可以方便得进行操作,包括show history、cherry-pick等。
      • cherry-pick可以挑选部分commit进行提交
      • pull-request利于code review,结合cherry-pick后不像其他工具需要分别查看多次提交所含的多个文件,而且到主仓库上后也比较明晰。
      • rebase
      • 和Perforce、ClearCase、SVN相比,更适合于互联网开发(没有特定版本一起release features,有可能好多人在同时开发,测试、合并、上线进度都不同)
      • 有ignore功能
    • 缺点
      * 概念、使用较复杂,尤其命令行
  • 相关阅读:
    实验吧(你真的会PHP吗)CTF之代码审计最终版---解析是错的 我的才是对的
    php的intval函数
    memcached 查看所有的key
    kvm 启动libvirtd时出现错误
    mysql三种binlog日志的理解
    mysql连接提示1030
    执行curl -sSL 提示curl: (35) SSL connect error
    tomcat线程数查看
    docker 1.12.3版本搭建私有仓库,上传镜像报错:server gave HTTP response to HTTPS client”
    memcached安装
  • 原文地址:https://www.cnblogs.com/wyp1988/p/9996097.html
Copyright © 2011-2022 走看看