精华内容
下载资源
问答
  • 代码版本控制流程

    千次阅读 2017-02-20 18:25:52
    代码版本控制 (一)、背景  公司30多个项目,源码都存放在自有git服务器上管理。公司没有统一的配置管理员对源码进行管理,都是由各个项目的干系人对代码的项目的各个分支进行管理。随着公司业务发展,每个...

    代码版本控制

    (一)、背景

             公司有30多个项目,源码都存放在自有git服务器上管理。公司没有统一的配置管理员对源码进行管理,都是由各个项目的干系人对代码的项目的各个分支进行管理。随着公司业务发展,每个项目的分支不断增加,有些项目甚至有10多个分支,而且大多分支都是由不同的开发人员创建的,分支多而杂,命名没有规范,常常发布一个新功能时,因为未合并其他分支的代码而出现功能不可用等问题,还有就是在需要开发新功能时,没有一个最新源码的分支进行代码拉取,很多时候都是在选择源分支时,心里没底。源码的权限管理缺失,存在因为不可控人为因素导致代码删除等现象发生的状态。

            

             基于以上状况提出以下建议:

    1、  标准化项目分支结构

    2、  控制源码管理权限

    3、  标准化开发、发布流程

    4、  保证任何情况出现,都能快速恢复当前生产环境及回滚生产环境到前一个版本

     

    (二)、分支规划:

     

    1、  dev分支(不稳定分支,开发分支)

    2、  master预生产分支(稳定分支,控制读写权限)

    3、  release当前生产环境分支(稳定分支,控制读写权限,备份,线上紧急bug修复使用)

    4、  release_bugfix当前生产环境紧急bug修复分支(稳定分支,控制读写权限)

    5、  release_last_version当前生产环境前一个版本分支(稳定分支,控制读写权限,备份用)、

     

     

    (三)、正常开发流程(开发人员):

     

    1、  从master拉取最新代码,创建功能分支dev_function_v.x.x

    2、  在功能分支dev_function_v.x.x上完成功能开发

    3、  从dev_function_v.x.x从功能分支上拉取代码,创建功能测试分支test_function_v.x.x(使用新的分支,以便可以基于dev_function_v.x.x分支开发新功能,该功能不同步发布)

    4、  打包测试分支test_function_v.x.x,提交测试包

    5、  部署测试包到测试环境

    6、  测试人员测试,提交bug到禅道

    7、  开发人员切换到test_function_v.x.x分支完成bug修改

    8、  重复步骤(4)-(7),直到bug修复完毕

    9、  将测试分支test_function_v.x.x代码合并到开发分支dev_function_v.x.x

     

     

    (四)、发布预生产(开发人员及配置管理员):

    1、  测试通过后,需要发布UAT环境或者预生产环境

    2、  申请锁定master代码,避免其他功能分支同步合并分支到master,各个分支相互影响

    3、  将master上的代码合并到测试分支test_function_v.x.x上,再将test_function_v.x.x代码合并到master上

    4、  从master打包UAT或者预生产环境包

    5、  发布至UAT环境或者预生产环境

    6、  验证UAT环境或者预生产环境,若出现bug,则回到test_function_v.x.x进行bug修改,从(一)4-9及(二)3-6开始走下面的流程

    7、  释放master合并权限给配置管理员

     

     

    (五)、发生产流程(配置管理员):

    1、UAT及预生产环境验证通过后,从master上打生产环境包

    2、发布最新代码至生产环境,若在发布生产环境过程中或者发布到生产环境功能或者服务出现问题,则使用release分支中的代码进行紧急回滚,恢复线上环境。

    3、如果新功能,发布生产成功而且验证通过,则先备份release分支中的代码至release_last_version分支(该分支用于紧急恢复到上一版本),再合并master中代码至release分支中及release_bugfix分支中

     

     

     

     

    (六)、生产环境bug修复流程(开发人员及配置管理员):

    发布生产出现的bug具有最高的优先级,不再走master分支,而是直接release_bugfix分支

    1、  切换到release_bugfix分支

    2、  合并release中的代码至release_bugfix(避免两个分支不一致)

    3、  修复bug,提交代码至release_bugfix分支

    4、  打包release_bugfix分支,部署至测试环境测试

    5、  测试人员测试,测试不通过,则重复3-4,直到测试全部通过。

    6、  测试通过,发布UAT或者预生产环境。如果生产环境bug修复完发布预生产环境过程中,已经存在功能在UAT环境或者预生产环境验证。则需回滚原有功能,待生产环境bug验证通过后,合并release_bugfix修复的代码后,再起发起预生产环境部署验证流程。

    7、  重复(五)发布生产环境

     

     

    (七)、分支清理(开发人员)

    1、删除test_function_v.x.x分支

    展开全文
  • 代码版本控制

    千次阅读 2010-11-21 15:10:00
    没有使用版本控制工具的开发工作,人形容就如同生活在“黑暗时代”。版本控制工具是项目开发中必不可少的,以此进行的版本控制可以确保在软件项目开发中,不同的开发人员所涉及的同一文档都得到更新。  ...

    现在的软件项目开发中,必然涉及版本控制(Revision Control)工具。没有使用版本控制工具的开发工作,有人形容就如同生活在“黑暗时代”。版本控制工具是项目开发中必不可少的,以此进行的版本控制可以确保在软件项目开发中,不同的开发人员所涉及的同一文档都得到更新。
        关于软件版本控制

    如果在开发团队中没有使用版本控制,多个开发人员共同负责同一个软件文档的开发,每个人在各自的机器上有整个软件文档的备份,并对之实施编程开发,在分别完成各自任务之后,再通过文本比对工具将各自机器上的不同版本的程序整合到一台机器上。没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。
        版本控制的目的是实现开发团队并行开发、提高开发效率的基础。其目的在于对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和相互覆盖,通过对版本库的访问控制避免未经授权的访问和修改,达到有效保护企业软件资产和知识产权的目的。
        版本控制的功能在于跟踪记录整个软件的开发过程,包括软件本身和相关文档,以便对不同阶段的软件及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修改,辅助协调和管理软件开发团队。

    点击在新窗口中浏览此图片
    Linux下的版本控制
        版本控制在空间上可以保证完成集中统一管理,解决一致性和冗余问题。在开发工作中,开发人员在提交软件代码的时候一般采用服务器/客户端方式,尽管开发人员可以在自己的本地留有备份,但最终唯一有效的只有服务器端的程序代码;在时间上全程跟踪记录工具将会自动记录开发过程中的每个更改细节,和不同时期的不同版本。这在一定程度上可以解决冗余、事务性处理并发性问题。项目管理人员可以通过版本控制对团队中的不同人员,实施操作权限的控制。对于不同角色的开发人员,对软件的不同部分可以定义不同的访问权限。这在一定程度可以解决软件安全性问题。版本控制工具的使用,可以减轻开发人员的负担,节省时间,同时降低人为错误。    各“级别”的版本控制工具
        
    “工欲善其事,必先利其器”。既然版本控制在软件项目开发中如此重要,那就有必要来仔细了解一下软件版本控制工具。
        版本控制工具也有“级别”之分,其中有“元老级”的CCC(Change and Configuration Control)、RCS(Revision Control System)、SCCS(Source Code Control System),“新秀级”的Hansky Firefly ,“入门级”的Visual SourceSafe,“中坚级”的Clearcase,还有开源软件通用的版本控制工具CVS(Concurrent Versions System)和SVN(SubVersion)。CVS在一段时期内几乎成为版本控制工具的“代名词”,大概有着30多年的历史,而SVN是CVS的理想替代者,并出自同一人之手,被一些人誉为“迄今为止最好用的开源源码版本控制工具”。
        CCC:Change and Configuration Control。在20世纪60年代末70年代初,软件配置管理的概念开始提出。20世纪七十年代初期加利福利亚大学的Leon Presser撰写了一篇论文,提出控制变更和配置的概念,之后在1975年,他成立了一家名为SoftTool的公司,开发了自己的配置管理工具CCC ——这也是最早的配置管理工具之一。
        RCS:Revision Control System。诞生于1980年,由WALTER.f.Tichy 于美国的在Indina州的 Purdue 大学开发,是基于单一文件的版本维护系统。
        SCCS:Source Code Control System。SCCS是一种基本的程序源代码版本控制工具,它适用于任何正文文件的版本维护。SCCS基于单一文件的版本控制,通常它的软件储藏室和要维护的文件在同一目录下. SCCS 工作时,有一个专门的SCCS 格式的文件保留其源文件的编码版本,其记录了足够的信息来生成新的版本,并记录了谁对文件有修改权,拥有该版本的”锁”。
       Hansky Firefly:作为H a n s k y 公司软件开发管理套件中重要一员的Firefly,可以轻松管理、维护整个企业的软件资产,包括程序代码和相关文档。Firefly是一个功能完善、运行速度极快的软件配置管理系统,可以支持不同的操作系统和多种集成开发环境,因此它能在整个企业中的不同团队,不同项目中得以应用。Firefly基于真正的客户机/服务器体系结构,不依赖于任何特殊的网络文件系统,可以平滑地运行在不同的LAN、WAN 环境中。它的安装配置过程简单易用,Firefly 可以自动、安全地保存代码的每一次变化内容,避免代码被无意中覆盖、修改。项目管理人员使用Firefly可以有效地组织开发力量进行并行开发和管理项目中各阶段点的各种资源,使得产品发布易于管理;并可以快速地回溯到任一历史版本。系统管理员使用Firefly的内置工具可以方便的进行存储库的备份和恢复,而不依赖于任何第三方工具。
        Visual SourceSafe:微软的版本控制工具,仅支持Windows操作系统。虽然简单好用,但是仅适用于团队级开发,不能胜任企业级的开发工作。
        Clearcase:IBM旗下Rational公司(2003年被IBM收购)的一款重量级的软件配置管理 (SCM, Software Configuration Managemen)工具。与CVS和VSS不同,Clearcase涵盖的范围包括版本控制、建立管理、工作空间管理和过程控制。从最初的软件配置计划,到配置项的确立,从变更控制到版本控制,Clearcase贯穿于整个软件生命周期。 Clearcase支持现有的绝大多数操作系统,但它的安装、配置、使用相对较复杂,并且需要进行团队培训。
        CVS:Concurrent Versions System。CVS 是有着三十年以上的时间的考验。CVS是开放源代码软件世界的一个伟大杰作,有人认为如今开源成功发展的幕后功臣之一当CVS莫属。Linux 的创始人 Linus 就把 Linux 的成功,归因于 CVS。由于CVS功能强大,跨平台,支持并发版本控制,而且免费,所以它在全球中小型软件企业中得到了广泛使用。CVS最大的遗憾就是缺少相应的技术支持,许多问题的解决需要自已寻找资料,甚至是研究源代码。CVS是一个典型的服务器/客户端软件,有UNIX版本的CVS 、Linux版本的CVS和WINDOWS版本的CVS。CVS支持远程管理,项目组分布开发时一般都采用CVS。
        SVN:SubVersion。CVS纵然易用,但也有一些与生俱来的缺点,比如CVS不支持文件改名,只对文件控制版本而没有针对目录的管理,等等。之后CVS 的创始人之一在其现任公司的资助下开发了SubVersion,用以替代CVS。SubVersion 的设计目的就是针对CVS 的一些弱点进行改进。

    点击在新窗口中浏览此图片
    SVN的版本控制流程
        CVS纵然是一个老牌的工具产品,并也对开源事业有贡献,但CVS的命令行操作着实让一些使用者头疼。在对一个特定版本的文档Check in的时候,还要输入一长串的路径名、文件名。在操作易用性上与CVS形成对比的是微软家族的VSS。作为微软的产品,在图形界面化操作上自不用多言,但 VSS只能适用于小团队的开发工作。VSS是很好的入门级工具,但它的一些功能也太过于“入门”,在验证密码、保存密码这些基本功能上处理的不尽人意。适用于大型软件开发的有“中坚级”的Clearcase,用它来管理一些小型的项目管理有些“大材小用”。Clearcase支持目录版本管理、异地团队开发、视图、多服务器等强大功能,所以一些大公司把它做为一、二级产品管理用,但同样它的价格也不菲。CVS是开源的,免费的,更何况它还有一个理想的替代者——SVN。SVN的设计专门针对CVS的问题作了改进,命令的设计更为合理,对二进制文档和目录这样的数据加强了控制能力,并且吸收了VSS的 lock-modify-update(release)的模式和modify-merge模式的优点这两种方式在一定程度都支持并作了优化,没有提高使用的复杂度——这是难能可贵的。由于SVN的设计结构很好,所以很容易为它开发客户端,好像很快就有了tortoiseSVN,Eclipse插件等很多客户端,还有WEB模式的,可以远程管理,支持RSS更改订阅。  

    展开全文
  • 数据库的版本控制与代码版本控制的区别在于数据库中的生产数据是现场创造的,当我们的表结构发生改变时,不能直接用drop table然后再create table,因为这样会导致生产数据丢失。而代码则完全由开发人员创造,可以...
    数据库的版本控制与代码版本控制的区别在于数据库中的生产数据是现场创造的,当我们的表结构发生改变时,不能直接用drop  table然后再create  table,因为这样会导致生产数据丢失。而代码则完全由开发人员创造,可以用完全覆盖的方式升级。由于这点不同,致使数据库在版本控制的过程中必然要采 用与代码不同的方法。
    

    软件过程有一个过程方法叫迭代过程。对数据库的版本化,我们也可以采用这种类似的方法------后一个版本的脚本依赖于前一个版本的脚本,即当你要把数 据库升级到第n个版本时,你必须先把数据库升级到第(n-1)个版本,以此递归。

    我对对于数据库版本化的具体思路如下:
    1.只存在一个基线版本;

    2.在基线版本后的修改都是修正版本;

    3.版本号遵从的格式通常是:主版本号.次版本号.修正号
    修正版本SQL脚本的命名规则(表,视图,存储过程,用户,角色,规则,默认值, 用户定义的数据类型,用户定义的函数,全文目录);
    a.涉及表、视图、存储过程、触发器的增加  版本号为:V1.1.0.0。(主版本号不变,次版本号加一,修正号归零)
    b.涉及表、视图、存储过程、触发器的更改、删除  版本号为:V1.2.1.0。(主版本号和次版本号不变,修正号加一)
    c.向表中增加、删除初始化数据的变化  版本号为:V1.2.1.1。(在修正号后增加一个标识)

    4.SQL脚本的格式:
    每一个版本号为一个目录,目录下分别存放处理表、视图、存储过程等的SQL脚本;
    /Database
    ├─V1.0.0.0
    │ Full-Text.sql
    │ Procedures.sql
    │ Tables.sql
    │ Views.sql

    ├─V1.1.0.0
    │ Tables.sql
    │ Views.sql

    ├─V1.1.1.0
    │ Full-Text.sql
    │  Procedures.sql
    │ Tables.sql
    │ Views.sql

    ├─V1.1.1.1
    │  Tables.sql

    └─V1.1.2.0
    Full-Text.sql
    Procedures.sql
      Tables.sql
    Views.sql

    5.关于数据库中的版本说明及更新记录:
    在每个数据库中新建一个表,名称为DBVersion,用于记录数据库经历的版本记录以及最新的版 本信息;

    可用于SQL Server 2000的SQL代码
    if exists (select * from dbo.sysobjects  where id = object_id(N'[dbo].[DBVersion]') and OBJECTPROPERTY(id,  N'IsUserTable') = 1)
    drop table [dbo].[DBVersion]
    GO
    CREATE  TABLE [dbo].[DBVersion] (
    [DB_ID] [int] IDENTITY (1, 1) NOT NULL ,
    [DB_Version] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [DB_Update_Time] [datetime] NOT NULL ,
    [DB_Remark] [varchar] (255) COLLATE  Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    GO

    6.编写程序以实现以下功能:
    读取Database目录的各个版本中的SQL文件,以实现升级或者新建数据。
    对于升级数据库需要能 够根据DBVersion表中的信息自动选择需要导入的SQL文件;或者提示用户当前可以升级到哪一些版本。
    同时还需要有校验Database中 版本的文件是否完整(包括版本完整和文件完整,这就需要存在一个校验文件);

    展开全文
  • 创建本地svn进行代码版本控制

    千次阅读 2017-05-17 20:50:47
    在软件开发的过程中,经常需要回退代码,对代码进行版本控制。为了方便对代码进行版本控制,本文给大家提供一种在本地创建SVN服务器的方法。方法简单易用,该博客适用于刚刚接触软件开发的工作人员及学生。分享此文...

    安装相关软件

    • 安装TortoiseSVN(安装教程网上有很多)

    创建本地SVN

    • 在本地创建一个文件夹,作为SVN服务器的文件夹,如下图所示:
      这里写图片描述
    • 之后我们右键选择TortoiseSVN菜单下的Create repository here,之后会弹出Repository created窗口,如下图所示:
      这里写图片描述
    • 点击“Create folder structure”,将会使本地svn库下创建branches,tags,trunk三个文件夹。(至于三个文件夹的意义,在本文就不做详细解释,感兴趣的朋友可以google了解一下)然后点击“OK”;(当然,如果不想在本地代码版本控制中生成这三个文件夹,可直接点击“OK”即可)
    • 创建成功后,在最初创建的“Svn_local”文件夹下会生成一系列文件,如下图所示:
      这里写图片描述

    创建本地文件夹,存放代码

    • 本地服务器创建完成后,再创建一个文件夹,用于存放将要进行版本控制的代码,例如:同样在F盘下创建一个名为“Test”的文件夹。右键该文件夹,在弹出的菜单项下选择“SVN Checkout…”,弹出如下图所示窗口:
      这里写图片描述
    • 在弹出的窗口中,需要注意图中标记的两个地方路径是否正确。其中”URL of repository:”路径为上述步骤1中创建的文件路径;“Checkout directory:”中填写的路径为上述步骤2中创建的文件路径(该路径通常不用修改)。确认路径无误后,点击“OK”,创建成功。
    • 此时,在“Test”文件夹下面,会出现上文提到的branches,tags,trunk三个子文件夹。通常我们的代码放在“trunk”目录下。拷贝需要进行版本控制的源代码到“trunk”目录下,然后,右键“Test”目录,选择“SVN Commit…”菜单,此时,代码就已经上传到本地的svn服务器中了。
    • 以后对代码进行修改后,可以进行“SVN Commit…”操作,想要回退到之前的版本,选择“SVN Update”即可。(此步骤及之后的操作就和非本地的svn服务器的操作完全一样了)
    展开全文
  • 代码版本控制

    千次阅读 2006-02-10 13:06:00
    代码版本控制 这是软件开发中一个十分重要的工程手段,几乎是必须的一个Process(过程)。很多作坊式的开发团队在采用软件工程的一些方法的时候,第一个要进行改进或增加的,往往就是这个过程。对初学者学习而言,...
  • Xcode中使用Git进行代码版本控制

    千次阅读 2015-12-23 15:08:05
    对于个人开发者来说,版本控制系统并不是必需的,但是我们仍然强烈推荐开发者使用它,因为它可以使代码方便的在错误的版本和可以工作的版本之间转换。事实上,很多开发者从来不使用类似的工具,他们会在项目添加新...
  • 个人代码托管和版本控制

    千次阅读 2016-06-15 21:39:12
    现在自己手里一些小项目,所以需要版本控制,偶尔可能会和别的朋友协同开发,所以研究了一下在线代码托管和版本控制平台,之前在公司的时候使用过SVN和GIT,经过对比,最终锁定了使用GIT来做版本控制,同时在线...
  • TortoiseSVN入门篇 - 将已项目代码加入svn版本控制

    万次阅读 多人点赞 2015-12-17 22:20:39
    将已项目代码加入svn版本控制 - TortoiseSVN入门篇Windows下SVN实用教程(以TortoiseSVN作为客户端(client)) 翻译: Bravo Yeung 如果使用的是git,则推荐使用TortoiseGit, Download - ...
  • 将已项目代码加入svn版本控制

    千次阅读 2018-08-16 11:20:38
    TortoiseSVN入门篇 - 将已项目代码加入svn版本控制 Windows下SVN实用教程(以TortoiseSVN作为客户端(client))       Next: 版本库的备份与存储 目录 导引 安装Subversion 安装TortoiseSVN 一步步地...
  • 时候在开发过程中我们经常会遇到这样的问题,即本来编译运行都OK的程序,不知道修改了那个配置,突然变得无法编译,或者运行时出现...所以,在代码中实行版本控制还是非常重要的。我们常用到的版本控制工具有SVN和GIT
  • 【Linux学习】linux源代码版本控制RCS

    千次阅读 2012-12-24 21:55:04
    SCCS是由AT&T在系统V版本的Unix中引入的最初的源代码控制系统,现在它已经是X/Open标准的一部分了。RCS的功能与SCCS非常类似,但是它有着更加直观的接口和一些其他的选项,所以SCCS基本上已经被RCS所取代。 RCS只...
  • Qt 用宏来控制代码版本

    千次阅读 2016-10-29 20:20:44
    时候我们做软件会多个版本,比如说一个产品分为企业版、个人版,里面只有部分内容区别,而大部分的业务逻辑都是相同的。这时候我们可以利用宏来控制程序的版本。比如说产品的IP地址分为开发环境、测试环境和...
  • pycharm与github代码版本控制管理

    千次阅读 2018-03-11 22:04:09
    pycharm还不知道如何进行版本控制操作,它底层还是需要调用git的功能。 1.下载安装Git 检验是否安装成功, 安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!...
  • 本文讲述了如何给visual studio 2019(其它版本也可以)增加本地、局域网或远程代码版本控制(SVN)的方法,所用工具为: 1. visual studio 2019 —— 集成开发环境 2. AnkhSvn —— Subversion Support for Visual ...
  • 版本控制

    千次阅读 多人点赞 2019-09-26 15:57:15
    除了项目源代码,你可以对任何类型的文件进行版本控制版本控制的作用 了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了...
  • 一.git版本控制原理 master(主分支), develop(分支),虽然是主分支和分支,却是平级关系,develop可以理解为开发库,master为生产库。 本地版本:master, develop GitHub上: master, develop 1.gitHub上master...
  • Git版本控制、分支策略与代码评审

    千次阅读 2018-05-13 22:20:17
    Git版本控制、分支策略与代码评审 Git介绍 Git工具与代码托管网站 在Windows上安装使用Git IDE支持Git 代码托管网站 Git原理 Git工作流 Git 分支 概述 理解如何使用Git分支 Git常用命令 参考文档 Git使用...
  • SVN代码版本管理

    千次阅读 2018-08-15 14:36:12
    SVN:Subversion 子级版本(子级源代码版本控制管理软件) 是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。 这个档案库很像一个普通的文件服务器, 不过它会记住...
  • idea使用git进行代码版本控制

    千次阅读 2018-04-02 11:33:43
    1、下载git的版本(Git-2.16.2-64-bit.exe),安装,可百度找教程。 2、安装成功后,点击桌面git的快捷方式打开命令行,运行git命令,出现以下界面则成功。 3、windows配置git ssh服务 1)生成SSH秘钥对: 命名...
  • 版本控制或源代码管理系统是软件开发必备的。本文为您介绍9款优秀的开源版本控制系统,它们在软件行业已经得到了广泛应用。  1.Subversion  Subversion是一个开源的版本控制系统。由CollabNet公司首创于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,034,621
精华内容 413,848
关键字:

代码版本控制有哪些