CN101145101A - 版本控制中定制和执行策略的方法、装置和系统 - Google Patents

版本控制中定制和执行策略的方法、装置和系统 Download PDF

Info

Publication number
CN101145101A
CN101145101A CN 200610153879 CN200610153879A CN101145101A CN 101145101 A CN101145101 A CN 101145101A CN 200610153879 CN200610153879 CN 200610153879 CN 200610153879 A CN200610153879 A CN 200610153879A CN 101145101 A CN101145101 A CN 101145101A
Authority
CN
China
Prior art keywords
version control
strategy
custom strategies
mentioned
project
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN 200610153879
Other languages
English (en)
Inventor
李贤�
张岭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN 200610153879 priority Critical patent/CN101145101A/zh
Priority to US11/854,812 priority patent/US8910117B2/en
Publication of CN101145101A publication Critical patent/CN101145101A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了为版本控制设置定制策略的方法、版本控制方法、为版本控制设置定制策略的装置、版本控制定制策略执行装置以及版本控制系统。根据本发明的一个方面,提供了一种为版本控制设置定制策略的方法,包括以下步骤:通过选择或设置版本控制选项,生成至少一个版本控制定制策略;将已生成的版本控制定制策略与一个项目或用户相关联;以及保存上述版本控制定制策略及其相关联的项目或用户的信息。

Description

版本控制中定制和执行策略的方法、装置和系统
技术领域
本发明涉及版本控制技术,更具体地说,涉及为版本控制设置定制策略的技术。
背景技术
通常,使用集成开发环境(Integrated Development Environment,IDE)修改源文件的内容,使用版本控制系统(Version Control System,VCS)进行源文件的版本控制。在大多数情况下,VCS不会在源文件的内容中插入附加信息,而是在VCS中添加该文件的一些元数据(Metadata)以追踪源文件版本的改变。这意味着开发人员不能直接看到版本控制信息。一旦源文件从VCS取出,用户无法直接查看源文件的版本控制和帮助识别修改状态的附加信息。
大多数现有的VCS产品,例如并行版本系统(Concurrent VersionsSystem,CVS)、ClearCase和配置管理和版本控制(ConfigurationManagement Version Control,CMVC)等,均为用户提供强大的版本控制功能,例如对源文件进行添加源控制、签入、签出等的操作,如图1的示意图所示。
CVS用于对所有源代码的修改历史进行记录。CVS的基本工作思路是在一台服务器上建立一个文件档案库,文件档案库里可以存放许多不同项目的源程序,由管理员统一管理文件档案库的存储和配置。每个用户在使用版本控制工具时,可以把新文件添加到文件档案库中或者把文件档案库里的已有项目文件下载到本地。用户做的任何修改首先都是在本地进行,然后用CVS命令进行提交,CVS系统对文件的变化进行跟踪,并检测修改冲突等。
ClearCase是软件配置管理(Software Configuration Management,SCM)工具,提供了用于实现SCM最佳实践的必要自动化手段与流程支持。ClearCase提供了一个开放型框架,用于实现各种不同类型的SCM解决方案。
CMVC基于项目数据库,它把所有对软件开发项目的描述和源文件元信息(即metadata,如文件更新记录等)的存储与源文件本身分离,保存在单独一个数据库中。
然而,图1示出的版本控制系统(CVS、ClearCase、CMVC等)存在以下问题:
(1)在进行文件操作动作,例如添加源文件控制、签入/签出等时,这些动作是固定的,用户不能在这些动作期间进行定制。
(2)不允许文件内容改变(例如插入标记信息)。也就是说,不允许改变源文件的内容,例如插入版本控制标记、时间标记信息等。
(3)项目管理员不能为每个项目定义特定的版本控制定制策略。
(4)项目开发人员需要在源文件内容中添加注释来说明被修改源代码位置及相关提示信息(例如“//modified by Sam atMay 5,2006”)。
总之,这些版本控制系统只能提供统一的方法和动作来处理所有的情况,用户在对不同的源文件和项目进行开发期间不能进行定制。
发明内容
为了解决上述现有技术中存在的问题,本发明提供了为版本控制设置定制策略的方法、版本控制方法、为版本控制设置定制策略的装置、版本控制定制策略执行装置以及版本控制系统。
根据本发明的一个方面,提供了一种为版本控制设置定制策略的方法,包括以下步骤:通过选择或设置版本控制选项,生成至少一个版本控制定制策略;将已生成的版本控制定制策略与一个项目或用户相关联;以及保存上述版本控制定制策略及其相关联的项目或用户的信息。
根据本发明的另一个方面,提供了一种版本控制方法,包括以下步骤:接收版本控制的命令;获得与上述版本控制的命令相关联的至少一个版本控制定制策略,其中每个上述版本控制定制策略包含预先选择或设置的版本控制选项;获得相关联的项目或用户的信息;以及根据上述获得的至少一个版本控制定制策略及相关联的项目或用户的信息,自定义地执行上述版本控制的命令。
根据本发明的另一个方面,提供了一种为版本控制设置定制策略的装置,包括:策略生成单元(policy generating unit),用于通过选择或设置版本控制选项,生成至少一个版本控制定制策略;策略定制单元(policycustomizing unit),用于将上述策略生成单元生成的版本控制定制策略与一个项目或用户相关联;以及保存单元(saving unit),用于保存上述版本控制定制策略及其相关联的项目或用户的信息。
根据本发明的另一个方面,提供了一种用于执行版本控制定制策略的装置,包括:命令接收单元(command receiving unit),用于接收版本控制的命令;策略获得单元(policy obtaining unit),用于获得与上述版本控制的命令相关联的至少一个版本控制定制策略,其中每个上述版本控制定制策略包含预先选择或设置的版本控制选项;关联信息获得单元(associated information obtaining unit),用于获得相关联的项目或用户的信息;以及命令执行单元(command performing unit),根据上述策略获得单元获得的至少一个版本控制定制策略以及上述关联信息获得单元获得的相关联的项目或用户的信息,自定义地执行上述版本控制的命令。
根据本发明的另一个方面,提供了一种版本控制系统,包括:上述的为版本控制设置定制策略的装置,用于设置版本控制定制策略;版本控制档案库;以及上述的用于执行版本控制定制策略的装置,用于与所述版本控制档案库一起执行上述版本控制定制策略。
附图说明
相信通过以下结合附图对本发明具体实施方式的说明,能够使人们更好地了解本发明上述的特点、优点和目的。
图1是根据现有技术的版本控制系统的示意图;
图2是根据本发明的一个实施例的为版本控制设置定制策略的方法的流程图;
图3是根据本发明的实施例的可定制策略层与版本控制档案库的示意图;
图4是根据本发明的另一个实施例的版本控制方法的流程图;
图5是根据本发明的实施例的用户命令与定制策略和项目强制策略进行相关动作的示意图;
图6是根据本发明的实施例在初始化可定制策略层时项目管理员选择并定义项目强制策略的示意图;
图7是根据本发明的另一个实施例的为版本控制设置定制策略的装置的方框图;
图8是根据本发明的另一个实施例的用于执行版本控制定制策略的装置的方框图;以及
图9是根据本发明的另一个实施例的版本控制系统的方框图。
具体实施方式
下面就结合附图对本发明的各个实施例进行详细的说明。
为版本控制设置定制策略的方法
图2是根据本发明的一个实施例的为版本控制设置定制策略的方法的流程图。
如图2所示,首先,在步骤201,通过选择或设置版本控制选项,生成一个或多个版本控制定制策略。
具体地说,版本控制档案库(version control repository)是版本控制系统中的一个中心存储位置,用于存储共享服务器上的受控文件。版本控制档案库不仅存储文件本身,而且存储每个受控文件的版本信息和文件变化。用户可以从版本控制档案库中取出(签出)具有特定版本的文件,并可以将文件写回(签入)版本控制档案库,同时由版本控制系统自动设定写入文件的版本。物理上,版本控制档案库使用操作系统的文件系统来进行文件控制和版本管理。具体的版本控制档案库将在下面参考图3进行详细说明。
在本实施例中,版本控制选项用于对受控文件进行各种定制的操作,实际上可以认为是一种策略原子,这些策略原子包括但不限于:
(1)代码格式化(Code Formatting)选项
当签入源文件时,代码格式化选项将根据预设的类型模板格式化代码类型,以使源文件更容易阅读和理解。
(2)文档摘要生成(Document Summary Generating)选项
为了查看文档摘要信息,通常用户将签出整个文件。文档摘要生成选项将对文档进行扫描并根据文档结构和内容产生一个简短摘要,以便于用户查看文档摘要信息。这样可以节约网络传输量并可以只将摘要信息传送到用户。
(3)版权信息扫描(Copyright information validation)选项
当添加新的源文件时,版权信息扫描选项将通过检查文件标题和注释部分来扫描源代码以确认其是否包括第三方代码,从而确保不将版权冲突代码签入版本控制档案库。
(4)元数据替换(Metadata Replacement)选项
在编辑文档时,通常需要用当前用户信息替换源文档属性,例如Word文档作者、组织、业务单元等信息。元数据替换选项将自动在签入或签出阶段利用新的元数据替换旧的元数据。
(5)公开API保护(Public API Protection)选项
对于公开API(应用编程接口),不允许重命名、更改或删除已经发布的公开API的接口定义。公开API保护选项将阻止任何对公开API接口代码的改变请求,使公开API兼容多个版本。
(6)将标题添加到新添加的源文件(Adding Header to New AddedSource File)选项
当将新的源文件添加到版本控制系统中时,将标题(如公司信息、项目信息等)添加到新添加的源文件选项将自动将预设的标题信息添加到源文件。
(7)智能合并(Smart Merging)选项
当几个开发人员同时修改一个源文件时,智能合并选项将在简单内容扫描之后判断是否存在可能的冲突。如果不存在可能的冲突,合并操作将自动进行而无需人介入。
(8)内容更新标记(Information Update Tagging)选项
内容更新标记选项将在源文件更新部分的前面添加注释信息行。
(9)为不同平台导出(Exporting for Different Platform)选项
当基于不同平台取出源文件时,为不同平台导出选项将源文件的格式转换成特定平台的格式。
(10)为特定用户设定版本(Setting Version for Specific User)选项
如果签入文件的用户名是“Jack”,那么为特定用户设定版本选项将该文件的版本设定为例如1.5版本。
(11)冲突通知(Confliction Notifying)选项
如果文件签入时发生冲突,并且发生时间是周末,那么冲突通知选项将发送邮件给管理员。
应该理解,上面列举出的这些版本控制选项只是为了说明,本发明并不限于此,因此,任何本领域的技术人员公知的现有和将来开发的任何版本控制选项都可以在本发明的架构中实现。
这些策略原子的集合组成了策略提供包,通常,用户从策略提供包中选择一个或多个策略原子组成策略,或输入定制信息来填充策略。每一个策略原子都需要一个软件代码模块来执行该策略原子,所有的支持策略原子的代码都会放在策略层中执行。
在上述步骤201,通过选择、设置或组合上述版本控制选项,生成一个或多个版本控制定制策略。
具体地说,版本控制定制策略是一种可执行实体,其为用户的偏好提供输入模板,接收几个文件作为输入源,并根据用户的输入偏好产生输出文件。例如“将标题添加到新添加的源文件”这一策略会将注释信息添加到每个新的源文件。接着,策略层接收一个或多个文件作为输入源。这意味着策略层可以操作单个文件输入和多个文件输入。接着,策略层根据用户的输入偏好产生输出文件,这是一个接一个的过程。输出文件的数量等于输入文件的数量。每个策略原子具有类型属性(例如“添加源控制”、“签入”、“签出”和“导出”),以表明用户和基于策略的可定制版本控制系统属于哪种类型。
在步骤201中生成的版本控制定制策略的实例包括但不限于:代码格式化策略、文档摘要生成策略、版权信息扫描、元数据替换策略、公开API保护策略、将标题添加到新添加的源文件策略、智能合并策略、内容更新标记策略、为不同平台导出策略、为特定用户设定版本策略、冲突通知策略及其组合。应该理解,生成的版本控制定制策略的实例并不限于此,其可以是上述版本控制选项的组合,也可以包括本领域的技术人员公知的现有和将来开发的任何版本控制定制策略。
接着,在步骤202,将生成的版本控制定制策略与一个项目或用户相关联。
具体地,项目管理员根据该项目的偏好在步骤201中生成新的版本控制定制策略,作为该项目的项目强制策略;或者项目管理员在已经生成的版本控制定制策略选择一个,作为该项目的项目强制策略。术语“项目强制策略”是指该策略与和该项目相关的用户相关联,即在与该项目相关的用户对源文件进行动作时,会同时执行该项目强制策略。此外,不同的项目管理员可以根据各自项目的偏好选择各自的项目强制策略。项目强制策略可以包括一个或多个上述版本控制定制策略,这些策略构成该项目的策略组。
策略组是用于特定项目使用的一个或多个策略,如图6所示,其中示出了根据本发明的实施例在初始化可定制策略层时项目管理员选择并定义项目强制策略的示意图。
在图6中,项目A的管理员为项目A定制了项目A策略组,该策略组包括策略X、策略Y等。项目B的管理员为项目B定制了项目B策略组,该策略组包括策略P、策略Q等。
此外,用户可以根据自己的偏好从步骤201中生成的版本控制定制策略中选择或定制与其相关联的版本控制定制策略,作为该用户的用户定制策略。术语“用户定制策略”是指在该用户对源文件进行动作时,会同时执行该用户定制策略。用户定制策略可以包括一个或多个上述版本控制定制策略,本发明对此并没有限制。
最后,在步骤203,保存上述版本控制定制策略及其相关联的项目或用户的信息。
具体地,将在步骤201中生成的版本控制定制策略和在步骤202中获得的与版本控制定制策略相关联的项目或用户的信息保存在版本控制系统的可定制策略层(customizable policy layer)中,如图3所示,其是根据本发明的实施例的可定制策略层与版本控制档案库的示意图。
在图3中,可定制策略层位于用户和版本控制档案库之间。可定制策略层包含所有的策略(例如可定制添加源控制策略、可定制签入/签出策略、可定制导出策略等)和策略组,以及与该策略或策略组相关联的项目或用户的信息。每个策略组都至少与一个项目相关联。每个用户选定的策略列表进入可定制策略层,作为选定策略的输入源,然后在可定制策略层执行模块中执行选定策略。另外,也可以先生成定制版本控制策略,然后将生成的定制版本控制策略存储,在项目应用中项目管理员在已经生成的版本控制定制策略选择一个或多个,和用户以及项目相关联后再将关联关系存储,也是步骤201、203、203的一种特殊实施方式。
通过以上的说明可知,本实施例的为版本控制设置定制策略的方法可以在版本控制系统中为不同的项目或用户定制不同的策略,并在对不同的源文件和项目进行开发期间进行相应的定制,从而极大地提高了版本控制系统的灵活性。
版本控制方法
在同一发明构思下,图4是根据本发明的另一个实施例的版本控制方法的流程图。下面就结合该图,对本实施例进行描述。对于那些与前面实施例相同的部分,适当省略其说明。
在图4中,首先,在步骤401,接收版本控制的命令。
总的来说,版本控制命令包括在版本控制系统中用户发出的添加文件,更新版本控制系统中的文件,或从版本控制系统中取出文件或者系统发出的其它相关命令中。具体地说,该命令可以包括在添加源控制、签入、签出、导出以及本领域的技术人员公知的任何其它命令中,本发明对此并不限制。
接着,在步骤402,获得与所述版本控制的命令相关联的一个或多个版本控制定制策略,其中每个上述版本控制定制策略包含预先选择或设置的版本控制选项,以及与该版本控制定制策略相关联的项目或用户的信息。也可能版本控制定制策略没有相关联的项目或用户信息,而是在接收的版本控制命令中包含有相关联的项目或用户的信息,这种情况,在此将它们关联起来。这些版本控制定制策略及与每个版本控制定制策略相关联的项目或用户的信息可以保存在版本控制系统的可定制策略层中。这里,获得与所述版本控制的命令相关联的版本控制定制策略可以在执行版本控制命令时定制版本控制定制策略,也可以事先将版本控制的命令与一个或多个已经存储的版本控制定制策略相关联,在运行版本控制的命令时再取出该版本控制定制策略,也可以先定制版本控制定制策略,但不将其与版本控制的命令相关联,而在运行版本控制的命令时再关联,等等多种实施方式。
可选版本控制定制策略的实例包括但不限于:代码格式化策略、文档摘要生成策略、版权信息扫描、元数据替换策略、公开API保护策略、将标题添加到新添加的源文件策略、智能合并策略、内容更新标记策略、为不同平台导出策略、为特定用户设定版本策略、冲突通知策略等。应该理解,可选的版本控制定制策略的实例并不限于此,其可以是上述版本控制定制策略的组合,也可以包括本领域的技术人员公知的现有和将来开发的任何版本控制定制策略。
最后,在步骤403,根据选择的版本控制定制策略,自定义地执行上述版本控制的命令。
具体地,如图5所示,示出了根据本发明的实施例的用户命令与定制策略和项目强制策略进行相关动作的示意图。图5中左侧示出的命令为例如添加/更新文件命令。该命令具有用户选择的定制策略A和策略E,以及与该命令相关的项目的项目定制策略,该项目强制策略包括策略X和策略Y。自定义地执行该版本控制的命令的步骤包括:首先将与该命令相关的文件发送到可定制策略层,接着在可定制策略层中对该相关文件执行策略A、策略E、策略X和策略Y的动作,之后将产生的文件发送到版本控制档案库中用于保存。
图5中右侧示出的命令为例如取出文件命令。该命令具有用户选择的定制策略B、策略D和策略F,以及与该命令相关的项目的项目定制策略,该项目强制策略包括策略X和策略Y。自定义地执行该版本控制的命令的步骤包括:首先将与该命令相关的文件从版本控制档案库中取出并发送到可定制策略层,接着在可定制策略层中对该相关文件执行策略B、策略D、策略F、策略X和策略Y的动作,之后将产生的文件发送给用户。
下面通过一个优选的实施例来说明本发明在版本控制中策略设置和策略实现的过程。
第一阶段:定制项目强制策略
在一个项目进行到编码阶段时,项目管理员为该项目建立了一个版本化对象库(Versioned Object Base,VOB),并选择了几个定制策略作为该项目的策略组,即项目强制策略。下面的表1示出了用户界面(UI)的一个实例。
表1
Figure A20061015387900161
例如项目“P”的管理员为该项目定义了如下项目强制策略:
(a)将标题添加到新添加的源文件策略
将标题添加到新添加的源文件策略执行模块自动将定制的标题信息添加到源文件的内容的前面。它的类型表明它在添加源控制交互时执行。项目管理员定义了如下内容信息:
    /*
     *Name:<file name>
     *Author:<user name>
     *Creation date:<time stamp>
     *Copyright(c)2006,International Business Machines Corporation
     *All right reserved.
     */
(b)智能合并策略
在并行开发过程中当多个开发人员同时修改一个源文件时,智能合并策略执行模块进行智能自动源文件内容合并。它的类型表明它在签入交互时执行。一旦在合并时发生冲突,通过对内容进行分析扫描判断,如果发现对源代码的修改不影响程序本身的逻辑,比如增加了空白行、空白字符或者注释信息,那么可以对冲突部分进行直接叠加;如果对源代码的修改影响了程序本身的逻辑,那么可以按照缺省的方式通知用户并最终由用户决定是否覆盖。
(c)代码格式化策略
策略层中代码格式化策略执行模块将根据预设的类型模板格式化代码类型,以使源文件更容易阅读和理解。它的类型表明它在添加源控制和签入交互时执行。
(d)版权信息扫描策略
策略层中版权信息扫描策略执行模块将通过检查文件标题和注释部分来扫描源代码(例如“GPL”、“CPL”许可标识符)以确认其是否包括第三方代码,从而确保不将版权冲突代码签入版本控制档案库。如果发现违反,将阻止该操作。它的类型表明它在添加源控制和签入交互时执行。
(e)公开API保护策略
策略层中公开API保护策略执行模块将不允许对这些公开API进行接口改变,例如重命名、更改或删除。如果发现违反,将阻止该操作。它的类型表明它在签入交互时执行。
第二阶段:添加新的源文件
开发人员开始将新的源文件添加到可定制版本控制系统的源控制中。开发人员“Sam”于“2006-04-28”在源控制中添加了项目“P”的源文件“Hello.java”,同时没有选择任何策略。源文件经过可定制策略层,并且可定制策略层发现项目“P”的策略组。然后,根据正确的类型,对源文件执行策略组中的上述策略。在此情况下,源文件由“将标题添加到新添加的源文件策略”和“代码格式化策略”进行了修改。
源文件为:
    package com.ibm.abc;
    public class Hello{int x=0;public void printHello(){
    System.our.println(
    “Hello world”);}public void
    printBye()
    {System.out
    .println(“Bye”);}}
修改后的源文件为:
    /*
     *Name:Hello.java
     *Author:Sam
    *Creation date:2006-04-28
    *Copyright(c)2006,International Business Machines Corporation
    *All right reserved.
    */
   package com.ibm.abc;
   public class Hello{
   int x=0;
   public void printHello(){
     System.out.println (“Hello world”);
   }
   public void printBye(){
     System.out.println(“Bye”);
   }
  }
此时,开发人员“Ling”想将来自第三方的源文件添加到源控制中。例如他想将如下源文件添加到源控制中,同时没有选择任何策略:
...
//GPL License agreement,2006
...
此时,策略层中的策略执行模块将进行动作。在此情况下,“版权信息扫描策略”执行模块确定“GPL”签名意味着存在由第三方开发的一些内容。因此,该添加源文件的操作失败,由此“Ling”将得到一个错误消息。
第三阶段:并行开发
开发人员并行更新源文件。通常,允许多个开发人员对相同的源文件进行并行处理。例如,两个开发人员“Sam”和“Ling”同时更新项目“p”的同一源文件“Hello.java”。他们同时签出该文件,并且“Ling”首先签入该文件,并选择了“内容更新标记策略”。这意味着源文件的内容将被评价,并将在更新代码部分前面的源文件的内容中如下插入信息行:
    ...
    public class Hello{
       int x=0;
       //print hello message
       public void printHello(){
          System.out.println(“Hello world”);
       }
       public void printBye(){
          System.out.println(“Bye”);
       }
     }
    ...
然后,根据正确的类型,利用该项目的策略组中的上述策略修改源文件。在此情况下,对于“Ling”的签入动作,不执行“智能合并策略”,因为不存在与他的签入动作的冲突。此外,“代码格式化策略”、“版权信息扫描策略”和“公开API保护策略”的执行模块也将进行动作。在此情况下,源文件将不改变。
随后,“Sam”完成他的更新并将文件签入,同时也选择了“内容更新标记策略”,结果如下:
    ....
    public class Hello{
       int x=0;
       //Update atMay 1,2006-By Sam
       int a=1;
       public void printHello(){
         System.out.println(“Hello world”);
       }
      public void printBye(){
        System.out.println(“Bye”);
     }
   }
  ...
然后,根据正确的类型,利用该项目的策略组中的上述策略修改源文件。在此情况下,对于“Sam”的签入动作,将执行“智能合并策略”,因为存在“Sam”和“Ling””的动作之间的可能冲突。在简单的判断之后,系统认为“Sam”和“Ling”的动作之间没有冲突,从而如下自动执行智能合并:
    ...
    public class Hello{
      int x=0;
      //Update at May 1,2006-By Sam
      int a=1;
      //print hello message
      public void printHello(){
        System.out.println(“Hello world”);
      }
      public void printBye(){
        System.out.println(“Bye”);
      }
    }
    ...
此外,策略层中“代码格式化策略”、“版权信息扫描策略”和“公开API保护策略”执行模块也将进行动作。在此情况下,源文件将不改变。
之后,开发人员“Ling”再次签出源文件,以及他签入源文件,并没有选择任何策略。他如下改变了一个公开API名称:
...
public void printHelloWorld(){
...
策略层中的策略执行模块将执行动作。在此情况下,“公开API保护策略”执行模块将确定公开API接口已经改变,从而此时签入操作失败。“Ling”将得到一个错误消息,并且源文件将不改变。
之后,另一个开发人员“Tom”想要查看文件“Hello.java”的主要内容。他打开文件并选择“文档摘要产生策略”,此时,只将文件的主要部分发送给他。主要部分的内容如下:
    public class Hello{
      public void printHello();
      public voidprintBye();
    }
第四阶段:为不同平台进行构建
集成人员取出相关的文件用于不同的构建(build)。在大多数情况下,需要不同的构建用于不同的平台。因此,集成人员选择“为不同平台导出策略”并选择“DOS”和“UNIX”作为用户偏好。这意味着这些源文件将在本地导出两份:一份是“DOS”格式文件,另一份是“UNIX”格式文件。
通过以上的说明可知,本实施例的版本控制方法可以在版本控制系统中为不同的项目或用户定制不同的策略,并在对不同的源文件和项目进行开发期间进行相应的定制,从而极大地提高了版本控制系统的灵活性。
另外,需要指出本发明的为版本控制设置定制策略的方法和版本控制方法不仅仅适用于以上描述的程序开发环境和可以应用于其他需要进行版本控制的环境中,例如,文档管理系统、办公自动化系统等等,其原理与前面描述的程序开发相同,在此不做重复说明。
为版本控制设置定制策略的装置
在同一发明构思下,图7是根据本发明的另一个实施例的为版本控制设置定制策略的装置的方框图。下面就结合该图,对本实施例进行描述。对于那些与前面实施例相同的部分,适当省略其说明。
如图7所述,本实施例的为版本控制设置定制策略的装置700包括:策略生成单元701,用于通过选择或设置版本控制选项,生成一个或多个版本控制定制策略;策略定制单元702,用于将策略生成单元701生成的版本控制定制策略与一个项目或用户相关联;以及保存单元703,用于保存上述版本控制定制策略及其相关联的项目或用户的信息。
具体地,版本控制档案库与上述参考图2的实施例中描述的相同,在此不在赘述。版本控制选项包括但不限于:代码格式化策略、文档摘要生成策略、版权信息扫描、元数据替换策略、公开API保护策略、将标题添加到新添加的源文件策略、智能合并策略、内容更新标记策略、为不同平台导出策略、为特定用户设定版本策略、冲突通知策略及其组合。应该理解,本发明并不限于此,因此,本发明的版本控制档案库可以包括本领域的技术人员公知的现有和将来开发的任何版本控制选项。
策略定制单元702可以为不同的项目定制项目强制策略,并可以为不同的用户定制用户定制策略。从而,通过定制将将策略生成单元701生成的版本控制定制策略与一个项目或用户相关联。
保存单元703将上述版本控制定制策略及其相关联的项目或用户的信息保存在可定制策略层中,可定制策略层与上述参考图3的实施例中描述的相同,在此不在赘述。
通过以上的说明可知,本实施例的为版本控制设置定制策略的装置700可以为不同的项目或用户定制不同的策略,并在对不同的源文件和项目进行开发期间进行相应的定制,从而极大地提高了版本控制系统的灵活性。
版本控制定制策略执行装置
在同一发明构思下,图8是根据本发明的另一个实施例的用于执行版本控制定制策略的装置的方框图。下面就结合该图,对本实施例进行描述。对于那些与前面实施例相同的部分,适当省略其说明。
如图8所述,本实施例的版本控制定制策略执行装置800包括:命令接收单元801,用于收版本控制的命令;策略获得单元802,获得与命令接收单元801接收到的版本控制的命令相关联的一个或多个版本控制定制策略,其中每个上述版本控制定制策略包含预先选择或设置的版本控制选项;关联信息获得单元803,获得相关联的项目或用户的信息;以及命令执行单元804,根据策略获得单元802获得的一个或多个版本控制定制策略和关联信息获得单元803获得的相关联的项目或用户的信息,自定义地执行上述版本控制的命令。
具体地,命令接收单元801接收的命令包括在版本控制系统中添加文件,更新版本控制系统中的文件,或从版本控制系统中取出文件。具体地说,该命令可以包括添加源控制、签入、签出、导出以及本领域的技术人员公知的任何其它命令,本发明对此并不限制。
策略获得单元802获得的每个上述版本控制定制策略中包含的预先选择或设置的版本控制选项的实例包括但不限于:代码格式化策略、文档摘要生成策略、版权信息扫描、元数据替换策略、公开API保护策略、将标题添加到新添加的源文件策略、智能合并策略、内容更新标记策略、为不同平台导出策略、为特定用户设定版本策略、冲突通知策略等。应该理解,可选的版本控制定制策略的实例并不限于此,其可以是上述版本控制定制策略的组合,也可以包括本领域的技术人员公知的现有和将来开发的任何版本控制定制策略。
关联信息获得单元803获得的相关联的项目或用户的信息可以包含在版本控制定制策略中,或者也可能版本控制定制策略没有相关联的项目或用户信息,而是在接收的版本控制命令中包含有相关联的项目或用户的信息,这种情况,在此将它们关联起来。这些版本控制定制策略及与每个版本控制定制策略相关联的项目或用户的信息可以保存在版本控制系统的可定制策略层中。这里,获得与所述版本控制的命令相关联的版本控制定制策略可以在执行版本控制命令时定制版本控制定制策略,也可以事先将版本控制的命令与一个或多个已经存储的版本控制定制策略相关联,在运行版本控制的命令时再取出该版本控制定制策略,也可以先定制版本控制定制策略,但不将其与版本控制的命令相关联,而在运行版本控制的命令时再关联,等等多种实施方式
命令执行单元804位于图3所示的可定制策略层中,并根据上述选择的版本控制定制策略,自定义地执行上述版本控制的命令。具体的执行过程与上述参考图5的实施例中的描述相同,在此不在赘述。
通过以上的说明可知,本实施例的版本控制定制策略执行装置800可以为不同的项目或用户定制不同的策略,并在对不同的源文件和项目进行开发期间进行相应的定制,从而极大地提高了版本控制系统的灵活性。
版本控制系统
在同一发明构思下,图9是根据本发明的另一个实施例的版本控制系统的方框图。下面就结合该图,对本实施例进行描述。对于那些与前面实施例相同的部分,适当省略其说明。
如图9所述,本实施例的版本控制系统900包括:上述的版本控制定制策略设置装置700;版本控制档案库903;以及上述的版本控制定制策略执行装置800。
通过以上的说明可知,本实施例的版本控系统900可以为不同的项目或用户定制不同的策略,并在对不同的源文件和项目进行开发期间进行相应的定制,从而极大地提高了版本控制系统的灵活性。
以上虽然通过一些示例性的实施例详细地描述了本发明的为版本控制设置定制策略的方法、版本控制方法、为版本控制设置定制策略的装置、版本控制定制策略执行装置以及版本控制系统,但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅由所附权利要求为准。

Claims (25)

1.一种为版本控制设置定制策略的方法,包括以下步骤:
通过选择或设置版本控制选项,生成至少一个版本控制定制策略;
将已生成的版本控制定制策略与一个项目或用户相关联;以及
保存上述版本控制定制策略及其相关联的项目或用户的信息。
2.根据权利要求1所述的为版本控制设置定制策略的方法,其中,上述版本控制选项包括选自如下的至少一种:代码格式化策略、文档摘要生成策略、版权信息扫描、元数据替换策略、公开API保护策略、将标题添加到新添加的源文件策略、智能合并策略、内容更新标记策略、为不同平台导出策略、为特定用户设定版本策略、冲突通知策略及其组合。
3.根据权利要求1或2所述的为版本控制设置定制策略的方法,还包括重复上述生成至保存的步骤。
4.根据权利要求3所述的为版本控制设置定制策略的方法,其中,一个项目与多个版本控制定制策略相关联。
5.根据权利要求3或4所述的为版本控制设置定制策略的方法,其中,一个用户与多个版本控制定制策略相关联。
6.根据权利要求1或3所述的为版本控制设置定制策略的方法,其中,与项目相关的用户和与该项目相关联的版本控制定制策略相关联。
7.根据权利要求1所述的为版本控制设置定制策略的方法,其中,上述保存步骤将上述版本控制定制策略及其相关联的项目或用户的信息保存在可定制策略层中。
8.一种版本控制方法,包括以下步骤:
接收版本控制的命令;
获得与上述版本控制的命令相关联的至少一个版本控制定制策略,其中每个上述版本控制定制策略包含预先选择或设置的版本控制选项;
获得相关联的项目或用户的信息;以及
根据上述获得的至少一个版本控制定制策略及相关联的项目或用户的信息,自定义地执行上述版本控制的命令。
9.根据权利要求8所述的版本控制方法,其中,上述版本控制选项包括选自如下的至少一种:代码格式化策略、文档摘要生成策略、版权信息扫描、元数据替换策略、公开API保护策略、将标题添加到新添加的源文件策略、智能合并策略、内容更新标记策略、为不同平台导出策略、为特定用户设定版本策略、冲突通知策略及其组合。
10.根据权利要求8或9所述的版本控制方法,其中,上述获得与上述版本控制的命令相关联的至少一个版本控制定制策略的步骤包括:
获得与上述版本控制的命令所针对的项目相关联的至少一个版本控制定制策略。
11.根据权利要求8-10中任何一项所述的版本控制方法,其中,上述获得与上述版本控制的命令相关联的至少一个版本控制定制策略的步骤包括:
获得与上述用户相关联的至少一个版本控制定制策略。
12.根据权利要求8或10所述的版本控制方法,其中,与项目相关的用户和与该项目相关联的版本控制定制策略相关联。
13.一种为版本控制设置定制策略的装置,包括:
策略生成单元,用于通过选择或设置版本控制选项,生成至少一个版本控制定制策略;
策略定制单元,用于将上述策略生成单元生成的版本控制定制策略与一个项目或用户相关联;以及
保存单元,用于保存上述版本控制定制策略及其相关联的项目或用户的信息。
14.根据权利要求13所述的为版本控制设置定制策略的装置,其中,上述版本控制选项包括选自如下的至少一种:代码格式化策略、文档摘要生成策略、版权信息扫描、元数据替换策略、公开API保护策略、将标题添加到新添加的源文件策略、智能合并策略、内容更新标记策略、为不同平台导出策略、为特定用户设定版本策略、冲突通知策略及其组合。
15.根据权利要求13或14所述的为版本控制设置定制策略的装置,其中上述策略生成单元生成多个版本控制定制策略。
16.根据权利要求15所述的为版本控制设置定制策略的装置,其中,上述策略定制单元使一个项目与多个版本控制定制策略相关联。
17.根据权利要求15或16所述的为版本控制设置定制策略的装置,其中,上述策略定制单元使一个用户与多个版本控制定制策略相关联。
18.根据权利要求13或15所述的为版本控制设置定制策略的装置,其中,上述策略定制单元使与项目相关的用户和与该项目相关联的版本控制定制策略相关联。
19.根据权利要求13所述的为版本控制设置定制策略的装置,其中,上述保存单元将上述版本控制定制策略及其相关联的项目或用户的信息保存在可定制策略层中。
20.一种用于执行版本控制定制策略的装置,包括:
命令接收单元,用于接收版本控制的命令;
策略获得单元,用于获得与上述版本控制的命令相关联的至少一个版本控制定制策略,其中每个上述版本控制定制策略包含预先选择或设置的版本控制选项;
关联信息获得单元,用于获得相关联的项目或用户的信息;以及
命令执行单元,根据上述策略获得单元获得的至少一个版本控制定制策略以及上述关联信息获得单元获得的相关联的项目或用户的信息,自定义地执行上述版本控制的命令。
21.根据权利要求20所述的用于执行版本控制定制策略的装置,其中,上述版本控制选项包括选自如下的至少一种:代码格式化策略、文档摘要生成策略、版权信息扫描、元数据替换策略、公开API保护策略、将标题添加到新添加的源文件策略、智能合并策略、内容更新标记策略、为不同平台导出策略、为特定用户设定版本策略、冲突通知策略及其组合。
22.根据权利要求20或21所述的用于执行版本控制定制策略的装置,其中,上述策略获得单元获得与上述版本控制的命令所针对的项目相关联的至少一个版本控制定制策略。
23.根据权利要求20-22中任何一项所述的用于执行版本控制定制策略的装置,其中,上述策略获得单元获得与上述用户相关联的至少一个版本控制定制策略。
24.根据权利要求20或22所述的用于执行版本控制定制策略的装置,其中,与项目相关的用户和与该项目相关联的版本控制定制策略相关联。
25.一种版本控制系统,包括:
根据权利要求13-19中任何一项所述的为版本控制设置定制策略的装置;
版本控制档案库;以及
根据权利要求20-24中任何一项所述的用于执行版本控制定制策略的装置。
CN 200610153879 2006-09-14 2006-09-14 版本控制中定制和执行策略的方法、装置和系统 Pending CN101145101A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN 200610153879 CN101145101A (zh) 2006-09-14 2006-09-14 版本控制中定制和执行策略的方法、装置和系统
US11/854,812 US8910117B2 (en) 2006-09-14 2007-09-13 Customizing and performing policy in version control

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200610153879 CN101145101A (zh) 2006-09-14 2006-09-14 版本控制中定制和执行策略的方法、装置和系统

Publications (1)

Publication Number Publication Date
CN101145101A true CN101145101A (zh) 2008-03-19

Family

ID=39190158

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200610153879 Pending CN101145101A (zh) 2006-09-14 2006-09-14 版本控制中定制和执行策略的方法、装置和系统

Country Status (2)

Country Link
US (1) US8910117B2 (zh)
CN (1) CN101145101A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526957B (zh) * 2009-04-09 2010-09-22 北京四方继保自动化股份有限公司 应用于电力自动化系统中的图形、模型一体化的版本管理方法
CN101873352A (zh) * 2010-06-12 2010-10-27 田小平 用于远程管理健康档案的装置和方法
CN104156278A (zh) * 2014-08-01 2014-11-19 江苏大学 一种文件版本控制系统及其方法
CN105183789A (zh) * 2015-08-21 2015-12-23 福建天晴数码有限公司 基于git源代码冲突的文件合并方法及系统
CN106528071A (zh) * 2015-09-15 2017-03-22 阿里巴巴集团控股有限公司 目标代码的选取方法及装置
CN106991176A (zh) * 2017-04-06 2017-07-28 广州视源电子科技股份有限公司 文件管理方法、装置、设备以及存储介质
CN108322540A (zh) * 2018-02-08 2018-07-24 深圳创维-Rgb电子有限公司 客制化数据导入方法、终端及计算机可读存储介质
CN108369498A (zh) * 2015-12-23 2018-08-03 Git软件中心公司 具有有限同步锁定的分布式代码存储库

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266122B1 (en) * 2007-12-19 2012-09-11 Amazon Technologies, Inc. System and method for versioning data in a distributed data store
US20100153919A1 (en) * 2008-12-11 2010-06-17 Wolfram Kramer Systems and methods for tracking software stands in a software production landscape
US8200860B2 (en) * 2009-02-13 2012-06-12 International Business Machines Corporation Apparatus and method to perform a version pre-check of a storage controller command
US9128805B2 (en) 2011-05-04 2015-09-08 Microsoft Technology Licensing, Llc Automated modification integration and conflict resolution for software development
US9626379B1 (en) * 2011-09-22 2017-04-18 Amazon Technologies, Inc. Optimistic commit processing for an offline document repository
EP2859439A4 (en) * 2012-06-08 2016-03-30 Hewlett Packard Development Co CLOUD APPLICATION DEPLOYMENT
WO2013184133A1 (en) * 2012-06-08 2013-12-12 Hewlett-Packard Development Company, L.P. Cloud application deployment portability
WO2013184140A1 (en) * 2012-06-08 2013-12-12 Hewlett-Packard Development Company, L.P. Version management for applications
US9924002B1 (en) 2012-06-21 2018-03-20 EMC IP Holding Company LLC Managing stateless processes
CN104572145B (zh) * 2013-10-16 2019-08-30 北大方正集团有限公司 文件版本管理方法及系统
US9430359B1 (en) 2013-11-06 2016-08-30 Amazon Technologies, Inc. Identifying and resolving software issues
US10089213B1 (en) * 2013-11-06 2018-10-02 Amazon Technologies, Inc. Identifying and resolving software issues
US10176193B2 (en) * 2014-06-23 2019-01-08 International Business Machines Corporation Holding specific versions of a document
CN106293662A (zh) * 2015-05-22 2017-01-04 中兴通讯股份有限公司 一种代码变化量的统计方法及其装置
CN106572128A (zh) * 2015-10-09 2017-04-19 阿里巴巴集团控股有限公司 用于在ide中部署应用的方法与设备
US9996342B2 (en) * 2016-01-22 2018-06-12 International Business Machines Corporation Automatic detection of potential merge errors
US11048823B2 (en) * 2016-03-09 2021-06-29 Bitspray Corporation Secure file sharing over multiple security domains and dispersed communication networks
CN105867978B (zh) * 2016-04-11 2018-12-11 平安科技(深圳)有限公司 Ogg版本部署方法和系统
US10827036B2 (en) * 2016-09-19 2020-11-03 Palantir Technologies Inc. Version control machine
US10534856B2 (en) 2016-10-17 2020-01-14 International Business Machines Corporation Atom-based sensible synchronization for information indexing
US10831635B2 (en) 2016-10-27 2020-11-10 International Business Machines Corporation Preemption of false positives in code scanning
US10127019B2 (en) 2017-03-08 2018-11-13 Hartford Fire Insurance Company System to coordinate source code module changes
US11294661B2 (en) * 2017-04-25 2022-04-05 Microsoft Technology Licensing, Llc Updating a code file
EP3582103A1 (en) * 2018-06-14 2019-12-18 QlikTech International AB Methods and systems for application program interface management
US10489144B1 (en) * 2019-07-22 2019-11-26 Capital One Services, Llc Automated bucket policy management arrangements
CN110765145B (zh) * 2019-10-15 2022-08-09 益萃网络科技(中国)有限公司 内容项传输方法、装置、设备及存储介质
US12039473B2 (en) * 2021-11-01 2024-07-16 T-Mobile Innovations Llc Software development project infrastructure builder tool

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993759B2 (en) * 1999-10-05 2006-01-31 Borland Software Corporation Diagrammatic control of software in a version control system
US7035850B2 (en) * 2000-03-22 2006-04-25 Hitachi, Ltd. Access control system
US6631386B1 (en) 2000-04-22 2003-10-07 Oracle Corp. Database version control subsystem and method for use with database management system
US20020162077A1 (en) 2001-04-30 2002-10-31 Chau-Iou Jeng In-sync hierarchy browser which provides version and access control on design collaboration for chip designs
US6928637B2 (en) 2001-08-10 2005-08-09 Wind River Systems, Inc. Version control adapter interface to support integration of multiple vendors integrated development environments (IDEs)
US7099899B2 (en) 2002-04-23 2006-08-29 International Business Machines Corporation System and method for item versioning in a content mangement system
US20030233621A1 (en) 2002-06-13 2003-12-18 International Business Machines Corporation Editor for smart version control
US20040073581A1 (en) 2002-06-27 2004-04-15 Mcvoy Lawrence W. Version controlled associative array
US20050044531A1 (en) 2003-06-09 2005-02-24 Erc-Ip, Llc Methods and systems for deploying computer source code
US20050114692A1 (en) 2003-11-26 2005-05-26 Brett Watson-Luke Systems, methods and software to configure and support a telecommunications system
US7437722B2 (en) 2004-07-19 2008-10-14 Accurev, Inc. Determining which software component versions of an issue resolution are included in a version of a software development project at a particular time
US20060026567A1 (en) 2004-07-27 2006-02-02 Mcvoy Lawrence W Distribution of data/metadata in a version control system

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526957B (zh) * 2009-04-09 2010-09-22 北京四方继保自动化股份有限公司 应用于电力自动化系统中的图形、模型一体化的版本管理方法
CN101873352A (zh) * 2010-06-12 2010-10-27 田小平 用于远程管理健康档案的装置和方法
CN104156278A (zh) * 2014-08-01 2014-11-19 江苏大学 一种文件版本控制系统及其方法
CN104156278B (zh) * 2014-08-01 2017-06-27 江苏大学 一种文件版本控制系统及其方法
CN105183789A (zh) * 2015-08-21 2015-12-23 福建天晴数码有限公司 基于git源代码冲突的文件合并方法及系统
CN106528071A (zh) * 2015-09-15 2017-03-22 阿里巴巴集团控股有限公司 目标代码的选取方法及装置
CN106528071B (zh) * 2015-09-15 2019-08-13 阿里巴巴集团控股有限公司 目标代码的选取方法及装置
CN108369498A (zh) * 2015-12-23 2018-08-03 Git软件中心公司 具有有限同步锁定的分布式代码存储库
CN106991176A (zh) * 2017-04-06 2017-07-28 广州视源电子科技股份有限公司 文件管理方法、装置、设备以及存储介质
CN108322540A (zh) * 2018-02-08 2018-07-24 深圳创维-Rgb电子有限公司 客制化数据导入方法、终端及计算机可读存储介质

Also Published As

Publication number Publication date
US8910117B2 (en) 2014-12-09
US20080072217A1 (en) 2008-03-20

Similar Documents

Publication Publication Date Title
CN101145101A (zh) 版本控制中定制和执行策略的方法、装置和系统
US10755234B2 (en) System and method for offline synchronization of exception items of shared services for client applications
US8918447B2 (en) Methods, apparatus, systems and computer readable mediums for use in sharing information between entities
US7496890B2 (en) Generation of configuration instructions using an abstraction technique
US7194730B2 (en) System and method for the configuration of software products
US7735062B2 (en) Software development system and method
US7010580B1 (en) Method and apparatus for exchanging data in a platform independent manner
US7617234B2 (en) XML schema for binding data
CN101263477B (zh) 用于管理与计算机生成文档相关联的数据的系统和方法
US20060101443A1 (en) Source code management system and method
AU2006200047A1 (en) Data store for software application documents
US20100088587A1 (en) Method and apparatus for providing inter-version document compatibility
US20080209572A1 (en) Data Processing System, Data Processing Method, and Management Server
US9229920B1 (en) Compound undo/redo manager for mixed model edits
US20060080329A1 (en) Systems and methods for creating a template from an existing file
US11625228B2 (en) System and method for facilitating efficient round-trip engineering using intermediate representations
JPWO2011118003A1 (ja) ウェブアプリケーション構築システム、ウェブアプリケーション構築方法、ウェブアプリケーション構築プログラムおよびウェブアプリケーション構築プログラムを記録した記録媒体
US7827195B2 (en) Document management device and document management method
EP1684170A2 (en) Software development system and method
CN110544092B (zh) 一种区块链的动态新增多类型数据库数据操作上链方法
Predoaia et al. Streamlining the development of hybrid graphical-textual model editors for domain-specific languages
JP2010061200A (ja) 文書管理システム及び操作履歴表示方法
Radjenovic et al. The role of dependency links in ensuring architectural view consistency
JP2014081886A (ja) ファイル管理装置およびコンピュータプログラム
Sadalage Recipes for Continuous Database Integration: Evolutionary Database Development (Digital Short Cut)

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20080319