• Android版本控制系统及其间的差异


    一、何谓版本控制

            它是一种软件工程籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它透过文档控制记录程序各个模块的改动,并为每次改动编上序号,并且编辑错误之后还可以回溯到以前的版本

    二、可供我们选择的版本控制系统

            1、VCS (本地版本控制)

            2、VSS、CVS(集中版本控制)

            3、ClearCase、SVN、Perforce、TFS(集中版本控制)

            4、Mercurial(水银/水星)、Git(分布式版本控制)

    差异:

    1.Git和其他版本控制系统的主要差别在于:Git只关心文件数据的整体是否发生了变化,而多数的其他系统则只关心文件内容的具体差异,它们在每个版本中记录着各个文件的具体差异。

    2. Subversion是一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS,优于CVS之处 原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。

    3. 分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

    三、svn与git

    1)适用对象不同。Git适用于参与开源项目的开发者。他们由于水平高,更在乎的是效率而不是易用性。Svn则不同,它适合普通的公司开发团队。使用起来更加容易。

    2)使用的场合不同。Git适用于通过Internet,有多个开发角色的单个项目开发,Svn适合企业内部由项目经理统一协调的多个并行项目的开发。

    3)权限管理策略不同。Git没有严格的权限管理控制,只要有帐号,就可以导出、导入代码,甚至执行回退操作。Svn则有严格的权限管理,可以按组、按个人进行针对某个子目录的权限控制。区分读、写权限。更严格的,不支持回退操作。保证代码永远可以追踪。

    4)分支(branch)的使用范围不一样。Git中,你只能针对整个仓库作branch,而且一旦删除,便无法恢复。而svn中,branch可以针对任何子目录,它本质上是一个拷贝操作。所以,可以建立非常多、层次性的branch,并且,在不需要时将其删除,而以后需要时只要checkout老的svn版本就可以了。

    5)基于第三点,Git适用于单纯的软件项目,典型的就是一些开源项目,比如Linux内核、busybox等。相反,Svn擅长多项目管理。比如,你可以在一个svn仓库中存放一个手机项目的bsp/设计文档/文件系统/应用程序/自动化编译脚本,或者在一个svn中存放5款手机项目的文件系统。git中必须建立n(项目数)*m(组件数)个仓库。Svn中只需要最多n或者m个就可以了。

    6)Git使用128位ID作为版本号,而且checkout时要注明是哪个branch,而svn使用一个递增的序列号作为全局唯一的版本号,更加简明易懂。虽然可以使用gittag来建立一些文字化的别名,但是毕竟那只是针对特殊版本。

    7)可跟踪性,git的典型开发过程为:建立分支,进行开发,提交到本地master,删除分支。这样做的后果是以前的修改细节会丢失。而在svn下做同样的事情,不会丢失任何细节。这里是一个有趣的链接,表明了git下典型的工作方式:(以master为核心,不断创建新branch,删除旧branch):

    http://www.kernel.org/pub/software/scm/git/docs/howto/separating-topic-branches.txt

    8)局部更新,局部还原。SVN由于是在文件夹建立一个.svn文件夹来实现管理,所以可以很简单实现局部更新或者还原。假如你只希望更新某些部分,则svn可以很好实现。同时代码写错了,同时可以很好实现局部还原,当然git也可以通过历史版本还原,但是无法简单地实现局部还原。

    四、svn常规操作

    1.TortoiseSVN官网地址:http://tortoisesvn.tigris.orgCheckout下载与电脑对应的软件。

    2.ckeckout(检出) 点击鼠标右键checkout选项指定资源库,导出地址点击ok即可。

    3.添加文件或者文件夹 在检出的文件中进行操作,首先在里面添加文件或者文件夹-->鼠标

    右键点击tortoiseSVN选项-->add-->SVN commit

    4. 把一个项目文件夹发布到SVN服务器上 在eclipse上配置svn插件http://subclipse.tigris.org/update_1.12.x

    鼠标右键-->team-->share project-->SVN-->next-->finish

    5. Update更新 鼠标右键-->team-->update

    6. Export导出 鼠标右键-->tortoiseSVN选项-->export

    7. 历史版本 eclipse 右键-->team-->显示历史资源版本 文件夹 右键-->tortoiseSVN选项-->show log

    8. 锁定 鼠标右键-->tortoiseSVN选项-->get lock

    9. 备份 文件操作 鼠标右键-->tortoiseSVN选项-->export

    10. 分之 eclipse 鼠标右键-->team-->分之/标记 指定分之名-->鼠标右键-->team-->update

    文件鼠标右键-->tortoiseSVN选项-->branch/tag

    11.冲突 当不同用户同时操作一行代码的时候,提交会有冲突,update即可。

     

  • 相关阅读:
    LeetCode_441. Arranging Coins
    LeetCode_437. Path Sum III
    Spearman秩相关系数和Pearson皮尔森相关系数
    Spark MLlib 之 Basic Statistics
    Spark MLlib 之 Naive Bayes
    Spark MLlib Data Type
    maven 下载 源码和javadoc 命令
    Hadoop的数据输入的源码解析
    Spark相关错误汇总
    Spark External Datasets
  • 原文地址:https://www.cnblogs.com/wumingchen/p/5755409.html
Copyright © 2020-2023  润新知