CN103019718A - 在集中式源控制环境中使用分布式源控制 - Google Patents

在集中式源控制环境中使用分布式源控制 Download PDF

Info

Publication number
CN103019718A
CN103019718A CN2012105445981A CN201210544598A CN103019718A CN 103019718 A CN103019718 A CN 103019718A CN 2012105445981 A CN2012105445981 A CN 2012105445981A CN 201210544598 A CN201210544598 A CN 201210544598A CN 103019718 A CN103019718 A CN 103019718A
Authority
CN
China
Prior art keywords
source control
computing device
control system
electronic computing
change
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.)
Granted
Application number
CN2012105445981A
Other languages
English (en)
Other versions
CN103019718B (zh
Inventor
V·伯克特
T·A·布赫
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN103019718A publication Critical patent/CN103019718A/zh
Application granted granted Critical
Publication of CN103019718B publication Critical patent/CN103019718B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及在集中式源控制环境中使用分布式源控制。呈现了一种用于在集中式源控制***的情况下使用分布式源控制***的方法。从源控制储存库获取第一文件集并且将其存储在第一电子计算设备上。第一文件集包括集中式源控制***中的代码库的全部或部分。从分布式源控制***中的第二电子计算设备接收对代码库的至少一部分的请求。作为请求的结果,第一文件集的至少一部分被发送到第二电子计算设备。从第二电子计算设备接收第一文件集的变更集。变更集被处理成采用与源控制储存库兼容的格式。变更集被提交给源控制储存库。

Description

在集中式源控制环境中使用分布式源控制
技术领域
本发明涉及在集中式源控制环境中使用分布式源控制。
背景技术
在针对源代码的修订控制的软件开发期间使用源控制***。集中式源控制***准许通常基于客户机/服务器模型的从中央位置进行修订控制。在集中式源控制***中,服务器计算机通常维护源代码储存库。客户机计算机上的软件开发人员可从源代码储存库登记取出源代码,并且在例如作出代码变更之后将源代码登记存回源代码储存库。
分布式源控制***提供基于对等模型的修订控制。在分布式源控制***中,每一个对等节点(例如每一个客户机计算机)上的源代码的工作副本可构成源代码储存库。分布式源控制***通常被称为分散式源控制***。
软件开发公司通常针对一个项目或使用集中式源控制***或使用分布式源控制***,但不会两者同时使用。公司通常对他们的集中式源控制***具有大量投入,并且可能发现要改变为一种不同类型的源控制***是困难且昂贵的。许多开发人员喜欢使用分布式源控制***,但还可能需要将他们的源代码登记存入公司的集中式源控制***。
发明内容
本发明的各实施例涉及一种用于在集中式源控制***的情况下使用分布式源控制***的方法。在第一电子计算设备上,从源控制储存库获取第一文件集。第一文件集包括集中式源控制***中的代码库的全部或部分。源控制储存库是集中式源控制***中的源控制储存库。第一文件集被存储在第一电子计算设备上。从第二电子计算设备接收对代码库的至少一部分的请求。第二电子计算设备是分布式源控制***中的电子计算设备。作为请求的结果,第一文件集的至少一部分被发送到第二电子计算设备。从第二电子计算设备接收第二文件集。第二文件集是第一文件集的变更集合。该变更集合被处理,以使得该变更集合采用与第一源控制储存库兼容的格式。当该变更集合采用与第一源控制储存库兼容的格式时,该变更集合被提交给第一源控制储存库。
提供本发明内容是为了以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也决不旨在用于限制所要求保护的主题的范围。
附图说明
图1示出支持在集中式源控制环境中使用分布式源控制***的示例***。
图2示出图1的接口服务器计算机和分布式源控制***的示例组件。
图3示出一种用于在集中式源控制***的情况下使用分布式源控制***的方法的示例流程图。
图4示出图1的接口服务器计算机的示例组件。
具体实施方式
本申请涉及用于在集中式源控制环境中使用分布式源控制***的***和方法。使用所述***和方法,从集中式源控制***获取源代码储存库的副本并将其存储在服务器计算机上。通常,源代码储存库的副本与用户正对其进行操作的软件开发项目相对应。源代码储存库的副本被用作分布式源控制***的软件储存库。源代码储存库的副本被周期性地更新,对集中式源控制***上的源代码储存库作出的变更进行镜像。在本发明中,源代码储存库的副本被称为团队中枢。
分布式源控制***通常包括多个客户机计算机。当客户机计算机之一上的软件开发人员需要对项目进行操作时,则软件开发人员向团队中枢请求源代码。在某些示例中,该请求可以针对软件开发项目的完整代码库。在其他示例中,该请求可以仅针对软件开发项目的代码库的一部分。当作出对源代码的请求时,在客户机计算机上创建源代码的工作区域。从团队中枢获取的源代码被存储在工作区域中。
软件开发人员可编辑存储在工作区域中的一个或多个源代码文件。当软件开发人员完成了对一个或多个源代码文件的编辑时,该一个或多个源代码文件被打包成与集中式源控制***兼容的格式。包括在分布式源控制***上对源代码文件作出的编辑的经打包的文件随后被提交给集中式源控制***以便进行登记存入。以此方式,可以从集中式源控制***获取一个或多个文件,在分布式源控制***上进行编辑,然后将其登记存入到集中式源控制***。
图1示出支持在集中式源控制环境中使用分布式源控制***的示例***100。示例***100包括集中式源控制***102、104、106,接口服务器计算机108,和分布式源控制***110和112。示例集中式源控制***102、104、106是用于管理对计算机文档和文件的变更的修订和版本控制***。计算机文档和文件的储存库通常被存储在集中位置,通常在一个或多个服务器计算机上。集中式源控制***102、104、106支持客户机/服务器模型。
通常使用客户机计算机从集中位置登记取出文件的软件开发人员对被登记取出的文件作出变更,随后将文件登记存回集中位置。集中式源控制***的一个示例是来自华盛顿州雷蒙德是微软公司的Team Foundation Sever(团队基础服务器)源控制***。第二示例是来自Perforce软件公司的Perforce源控制***。集中式源控制***的其他示例是可能的。示例***100中可包括更多或更少集中式源控制***。
示例接口服务器计算机108提供准许集中式源控制***102、104、106与分布式源控制***110、112进行合作的桥接技术。接口服务器计算机108获取存储在集中式源控制***102、104、106上的源代码储存库的副本。副本通常包括每一个源代码储存库中的所有分支以及对源代码储存库作出的变更的完整历史。
在本发明中也被称为团队中枢的副本被存储在接口服务器计算机108上。接口服务器计算机108还将在分布式源控制***110、112上编辑的文件处理成兼容的格式,以便将经编辑的文件登记存入到集中式源控制***102、104、106中。在各示例中,接口服务器计算机108的团队中枢和登记存入功能可被合并到集中式源控制***102、104、106中的一个或多个中。另外,在各示例中,可使用多个团队中枢。例如,可能存在用于每一个项目的独立的团队中枢,每一个团队中枢为不同的项目提供源代码储存库的副本。
通常,在分布式源控制***110、112中的一个上编辑的一个或多个文件被打包以便被登记存入到集中式源控制***102、104、106中的一个中。接口服务器计算机108将对被登记取出的文件的变更从在其上作出变更的分布式源控制***定向到其中变更被登记存入的集中式源控制***。在各示例中,接口服务器计算机108可被配置成将变更从一个分布式源控制***定向到特定的集中式源控制***。
在其他示例中,接口服务器计算机108可维护哪个分布式源控制***与哪个集中式源控制***相对应的内部表。例如,如果来自一个分布式源控制***中的客户机计算机作出了针对被包括在与特定集中式源控制***相关联的团队中枢中的项目的文件的请求,则接口服务器计算机108可维护将该分布式源控制***与该集中式源控制***相关联的表。
示例分布式源控制***110、112实现源控制的对等模型。在分布式源控制***110、112中,每一个对等节点(通常为客户机计算机)存储源代码储存库的工作副本。可从工作副本中创建一个或多个代码分支。软件开发人员可在线或离线地对软件文件作出变更。不同客户机计算机上的软件开发人员可直接共享经编辑的文件,从而消除了将文件传输到集中位置的必要。分布式源控制***的连个示例是Mercurial分布式源控制***和Git分布式源控制***。分布式源控制***的其他示例是可能的。示例***100中可包括更多或更少分布式源控制***。
示例***100还支持混合模型,其中软件开发团队可使用与集中式源控制***相关联的工具,并且还可使用与分布式源控制***相关联的工具。例如,软件开发人员可使用客户机计算机,使用与集中式源控制***102相关联的登记存入和登记取出工具来将文件在集中式源控制***上(例如集中式源控制***102上)的源代码储存库中登记存入和登记取出。
同一个软件开发人员还可将客户机计算机作为分布式源控制***(例如分布式源控制***110)的一部分来使用以离线工作、与分布式源控制***中的其他客户机计算机共享文件、以及使用与分布式源控制***相关联的工具。软件开发人员还可在分布式软件控制***上创建代码分支。代码分支通常与正被开发或正对其进行调试的新的软件特征相关联。代码分支可与其他开发人员共享。可在代码分支上完成多次登记存入。软件开发人员可使用围绕集中式源控制***创建的预登记存入验证的标准工具来对在他们的分布式源控制***工作区域中开发的变更进行操作。这通过将数据打包成公共格式并且或将变更集直接提交给集中式源控制***或将变更集提交给接口服务器计算机108,从接口服务器计算机108将变更集提交给集中式源控制***来完成,这将在下文更详细地说明。
图2示出更详细地描述了接口服务器计算机108和分布式源控制***110的操作的示例***200。示例***200包括集中式源控制***102、接口服务器计算机108、和分布式源控制***110。接口服务器计算机108包括示例团队中枢模块202和示例变更集登记存入模块204。分布式源控制***110包括客户机计算机206和210。客户机计算机206包括工作区域208,而客户机计算机210包括工作区域212。分布式源控制***110中可包括更多或更少客户机计算机。
在各示例中,团队中枢模块202从集中式源控制***102获取并存储针对一项目的源代码储存库的副本。源代码储存库的副本包括来自源代码储存库的所有文件的副本、所有代码分支、以及项目的所有历史记录。另外,团队中枢模块从集中式源控制***102获取对源代码储存库的周期性更新。在各示例中,周期性更新可以5到15分钟的间隔发生。其他时间间隔是可能的。在各示例中,也被称为镜像的获取周期性更新可使用来自集中式源控制***102的提交通知来触发。
当客户机计算机206上的软件开发人员需要访问项目的源代码时,客户机计算机206向团队中枢模块202发送对源代码的请求。该请求可以针对项目的整个代码库,或者该请求可以针对项目的代码库的一部分。所获取的源代码有时被称为软件征募(enlistment)或工作区域。当从团队中枢模块202获取所请求的源代码时,源代码被存储在客户机计算机206上的工作区域208中。
客户机计算机206上的软件开发人员可编辑存储在工作区域208中的一个或多个文件。另外,软件开发人员可创建存储在工作区域208中的源代码的一个或多个新的代码分支,编辑一个或多个代码分支中的一个或多个源代码文件,并且将经编辑的代码登记存回工作区域208中。
以类似的方式,当客户机计算机210上的软件开发人员需要访问项目的源代码时,客户机计算机210向团队中枢模块202发送对源代码的请求。该请求可以针对项目的整个代码库,或者该请求可以针对项目的代码库的一部分。当从团队中枢模块202获取所请求的源代码时,源代码被存储在客户机计算机212上的工作区域208中。
客户机计算机210上的软件开发人员可编辑存储在工作区域212中的一个或多个文件。另外,软件开发人员可创建存储在工作区域212中的源代码的一个或多个代码分支,编辑一个或多个代码分支中的一个或多个源代码文件,并且将经编辑的代码登记存回工作区域212中。
客户机计算机206和210上的软件开发人员还可共同对特定软件特征进行操作。通常,这通过创建该特征的源代码的独立分支来完成。例如,一个软件开发人员(例如客户机计算机206上的软件开发人员)可编写该特征的代码,而另一软件开发人员(例如客户机计算机210上的软件开发人员)可测试该特征的代码。
在某一时刻,客户机计算机206和210上的软件开发人员可能想要将经更新的源文件登记存入到集中式源控制***102中。通常,在分布式源控制***上,经更新的源文件和其他变更被打包成变更集,并且被提交给集中式源控制***以便进行登记存入。然而,分布式源控制***110可为登记存入使用与集中式源控制***102中所使用的不同的命令和不同的文件格式。因此,变更集需要被处理成与集中式源控制***102兼容的格式。
变更集通常包括经被添加、删除、修改的所有源文件,通常针对在代码分支中完成的工作,例如针对漏洞修复或针对特定特征。变更集还包括作出的变更的清单或描述。例如,如果用户在五个独立的分布式源控制***上添加了文件A、编辑了文件A、编辑了文件B、添加了文件C以及删除了文件C,则变更集包括文件A、文件B和清单。另外,变更集通常包括版本化信息、时间戳、作者等。在某些示例中,变更集被打包成包括所有经变更的源代码文件和清单的一个文件,例如zip文件。在其他示例中,经变更的文件被单独提供。在某些示例中,变更集包括XML文件或脚本。变更集登记存入模块204将变更集处理成与集中式源控制***102兼容的格式。因为源代码变更采用与集中式源控制***102兼容的格式,所以源代码变更现在可被登记存入到集中式源控制***102中。结果,在分布式源控制***中的客户机计算机206和210上作出的变更可被登记存入到集中式源控制***102中。
变更集登记存入模块204还处理其中使用集中式源控制***和多个分布式源代码控制***的情形,例如图1中的***100。例如,每一个分布式源控制***110、112可具有针对集中式源控制***102、104、106中的任一个的源代码变更。
在各示例中,从分布式源控制***110、112接收的源代码更新包括对源代码更新针对哪个集中式源控制***的指示。例如,当创建分布式源代码征募时,分布式源代码征募通常包括团队中枢客户机配置文件,该文件将分布式源代码征募指向合适的目标集中式源代码控制***。团队中枢客户机工具随后可被用来打包源代码变更,并且将经打包的源代码变更定向到合适的目标集中式源代码控制***。在其他示例中,变更集登记存入模块204包括将分布式源控制***与集中式源控制***相关联的路由信息。当从分布式源控制***接收到源代码更新时,变更集登记存入模块204将源代码更新格式化成与合适的集中式源控制***兼容。
集中式源控制***102可从多个客户机计算机(例如,从分布式源控制***110中的客户机计算机206和210以及从分布式源控制***112中的一个或多个客户机计算机)接收一个或多个特征代码分支上的源代码变更。一旦代码分支上的源代码变更被提交给集中式源控制***102,这些变更就最终被镜像到团队中枢模块202。当被镜像到团队中枢模块202时,可删除分布式源控制***112中的代码分支,因为该代码分支现在是冗余的。
有时,当源代码更新给提交给集中式源控制***时会发生冲突。冲突通常是在另一软件开发人员从集中式源控制***上的源代码储存库获取了文件之后一个或多个软件开发人员对该源代码储存库作出变更而导致的。
例如,如果客户机计算机206上的软件开发人员正在来自从团队中枢模块202获得的代码库的特征代码分支中进行操作,而客户机计算机210上的另一软件开发人员对这一相同的代码库作出变更并且在客户机计算机206上的软件开发人员将类似的文件登记存入到集中式源控制***102之前将那些变更登记存入回集中式源控制***102中的源代码储存库,则现在存储在集中式源控制***102中的一个或多个文件可能与客户机计算机206上的软件开发人员正提交的文件不同。在类似于这样的情形中,集中式源控制***102可拒绝客户机计算机206上的软件开发人员提交的源代码变更。客户机计算机206上的软件开发人员在将源代码变更重新提交给集中式源控制***102之前可能需要手动解决冲突。客户机计算机206上的软件开发人员通过从团队中枢模块202获取最新近的源代码、将特征分支中的源代码变更与最新近的所获取的源代码合并、并且重新提交源代码变更来手动解决冲突。
图3示出一种用于在集中式源控制***的情况下使用分布式源控制***的方法300的示例流程图。在操作302,从集中式源控制储存库获取第一文件集。集中式源控制储存库是集中式源控制***的一部分,诸如来自微软公司的TeamFoundation Server源控制***。第一文件集通常包括项目的代码库。
代码库通常基于来自集中式源控制***中的服务器计算机(例如,来自接口服务器计算机108(团队中枢服务器计算机))的请求来从集中式源代码储存库获取。在某些示例中,团队中枢服务器计算机与主存集中式源代码储存库的服务器计算机是不同的。在其他示例中,团队中枢服务器计算机与主存集中式源代码储存库的服务器计算机是相同的。在其他示例中,团队中枢服务器计算机是开发人员的计算机。
在操作304,所获取的代码库被存储在团队中枢服务器计算机上。团队中枢服务器计算机充当分布式源控制***中的客户机计算机的源代码中枢。一个或多个客户机计算机可请求代码库的全部或部分。源代码中枢的示例是接口服务器计算机108上的团队中枢模块202。
在操作306,从分布式源控制***上的客户机计算机(例如从客户机计算机206)接收对代码库的请求。该请求可针对存储在团队中枢服务器计算机上的完整代码库。另选地,该请求可针对存储在团队中枢服务器计算机上的代码库的一部分。
在某些示例中,该请求包括从团队中枢服务器计算机登记取出代码库的一部分。在各示例中,超过一个客户机计算机(例如客户机计算机210)可登记取出代码库的全部或部分。登记取出文件指的是团队中枢服务器计算机制作所请求的文件的副本,并将所请求的文件发送到作出对文件的请求的客户机计算机。
在操作308,所请求的文件被发送到客户机计算机。文件在客户机计算机206处被接收并且被存储在客户机计算机206上的工作区域中(例如工作区域208)。工作区域是客户机计算机206上文件可在其中被编辑并且可从中创建或删除一个或多个代码分支的存储器区域。在各示例中,代码分支与项目中的特定特征或漏洞修复相对应。例如,代码分支可表示某一天的代码库,或者代码库可表示专用于诸如测试之类的特定操作的代码库的版本。代码分支通常与不同的发布版本相对应。另外,源代码文件可在不同代码分支上多次修改。例如,文件X可能在分支Y上被修改了N次,在分支Z上被修改了M次。代码分支的其他示例是可能的。代码分支的经修改的文件可被登记存入到集中式源控制***102中,如本文所讨论的。
在操作310,从客户机计算机206接收变更集。变更集包括在客户机计算机206上被添加、删除或修改的文件。变更集还包括提供对客户机计算机206上的源代码作出的变更的描述的清单。需要该清单来以最高的保真度将变更从分布式源控制***复制到集中式源控制***。例如,文件A可被重命名为文件B,文件C可被复制到文件D并且随后被修改,文件E可被删除,等等。
变更集还包括作者名、版本号、时间戳等。变更集中可包括其他信息。变更集可包括一个文件,例如zip文件,或者变更集可包括多个文件。在各示例中,变更集可包括XML文件或脚本。变更集的其他示例是可能的。
除了包括客户机计算机206上作出的变更之外,变更集还可包括由例如客户机计算机210之类的一个或多个其他客户机计算机做源文件作出的变更。在分布式源控制***中,分布式源控制***中的各个客户机计算机可彼此传递代码变更。另外,开发人员可直接与集中式源控制***(例如集中式源控制***102)进行操作,与可能正直接与分布式源控制***进行操作的其他开发人员并行。
在操作312,变更集在变更集登记存入模块204中被处理成对于在集中式源控制***处登记存入是兼容的。集中式源控制***102通常使用与分布式源控制***110中所使用的不同的句法和进程来进行文件的登记存入和登记取出。当变更集在变更集登记存入模块204中被处理时,第二文件集中的一个或多个文件可被格式化成与集中式源控制***102兼容的格式。在操作314,变更集被提交以向集中式源控制***102登记存入。
当变更集在客户机计算机106处被打包时,打包变更集的工具还包括对正被使用的分布式源控制***的类型(例如,Mercurial分布式源控制***或Git分布式源控制***)的指示。当变更集在操作312被处理时,变更集登记存入模块204根据变更集作出关于正在使用哪个分布式源控制***的判断。变更集被打包成与正在使用的分布式源控制***无关的格式。
变更集登记存入模块204还作出关于变更集要被定向到哪个集中式源控制***的判断。作为对变更集源自的分布式源控制***以及变更集要被登记存入的集中式源控制***的判断的结果,登记存入模块204可能需要修改或重新格式化变更集中的一个或多个文件,以使得变更集与该变更集要被登记存入的集中式源控制***兼容。然而,在登记存入时,集中式源控制***不必知道变更集是在哪个分布式源控制***上创建的,并且在分布式源控制***创建和打包变更集时,分布式源控制***不必知道该变更集要被定向到哪个集中式源控制***。结果,对于代码登记存入,每一个分布式源控制***只需要将变更集定向到变更集登记存入模块204,并且不需要到每一个集中式源控制***的链接。类似地,对于代码登记存入,每一个集中式源控制***只需要具有到登记存入模块204的链接,而不需要到每一个分布式源控制***的链接。
在只使用一个集中式源控制***(例如集中式源控制***102)的示例***中,客户机计算机206可将经打包的变更集直接发送到集中式源控制***102。在各示例中,经打包的变更集可被直接发送到集中式源控制***102,甚至对于使用多个集中式源控制***的情况也是如此。例如,分支上的变更可被直接提交给集中式源控制***102或提交给指定的集中式源控制***。
参考图4,示出了接口服务器计算机108的示例组件。在各示例实施例中,服务器计算机108是计算设备。服务器计算机108可包括输入/输出设备、中央处理单元(“CPU”)、数据存储设备以及网络设备。服务器计算机108还可以是移动计算设备,诸如膝上型计算机、平板计算机、可转换设备、或如智能电话或蜂窝电话之类的其他手持式设备。
在基本的配置中,服务器计算机108通常包括至少一个处理单元402和***存储器404。取决于计算设备的确切配置和类型,***存储器404可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是两者的某种组合。***存储器404通常包括适用于控制客户计算机的操作的操作***406。***存储器404还可以包括一个或多个软件应用408并且可以包括程序数据。
服务器计算机108可具有附加特征或功能。例如,服务器计算机108还可以包括计算机可读介质。计算机可读介质可包括计算机可读存储介质和通信介质两者。
计算机可读存储介质是物理介质,诸如包括磁盘、光盘或磁带的数据存储设备(可移动和/或不可移动)。这样的附加存储在图4中由可移动存储410和不可移动存储412示出。计算机可读存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机可读存储介质可以包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备,或者可用于存储所需信息并可由服务器计算机108访问的任何其他介质。任何这样的计算机可读存储介质都可以是服务器计算机108的一部分。服务器计算机108还可具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备414。还可包括诸如显示器、扬声器、打印机等输出设备416。
根据本公开的实施例,输入设备414可包括能够检测用户的移动或姿势的任何运动检测设备。例如,输入设备414可以包括微软公司的
Figure BDA00002587765600111
运动捕捉设备,它包括多个相机和多个话筒。
服务器计算机108也可以包含允许该设备与其它计算设备418通信的通信连接420,诸如在分布式计算环境中通过网络,例如内联网或因特网。通信连接418是通信介质的一个示例。通信介质通常由诸如载波或其他传输机制之类的已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传送介质。术语已调制数据信号摂是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质、以及诸如声学、RF、红外及其他无线介质之类的无线介质。
可以通过片上***(SOC)来实践本发明的实施例,其中,可以将图4中示出的每个或许多组件集成到单个集成电路上。这样的SOC设备可包括一个或多个处理单元、图形单元、通信单元、***虚拟化单元以及各种应用功能,所有这些都被集成到(或“烧录到”)芯片基板上作为单个集成电路。当经由SOC来操作时,上文描述的关于本发明的功能可经由与单集成电路(芯片)上的服务器计算机108的其他组件相集成的应用专用逻辑来操作。
以上描述的各个实施例仅作为说明提供,并且不应被解释为限制。可对以上描述的实施例做出各种修改和改变,而不背离本公开的真实精神和范围。

Claims (10)

1.一种用于在集中式源控制***(102)的情况下使用分布式源控制***(110)的方法,所述方法包括:
在第一电子计算设备(108)上,从第一源控制储存库获取一个或多个文件的第一集合,第一文件集包括所述集中式源控制***(102)中的代码库的全部或部分,所述第一源控制储存库是第一集中式源控制***(102)中的源控制储存库;
将所述第一文件集存储在所述第一电子计算设备(108)上;
从第二电子计算设备(206)接收对所述代码库的至少一部分的请求,所述第二电子计算设备(206)是第一分布式源控制***(110)中的电子计算设备;
作为所述请求的结果,将所述第一文件集的至少一部分发送到所述第二电子计算设备(206);
从所述第二电子计算设备(206)接收一个或多个文件的第二集合,所述一个或多个文件的第二集合是所述第一文件集的变更集;以及
处理所述变更集以使得所述变更集采用与所述第一源控制储存库兼容的格式;以及
当所述变更集采用与所述第一源控制储存库兼容的格式时,将所述变更集提交给所述第一源控制储存库。
2.如权利要求1所述的方法,其特征在于,还包括周期性地从所述第一源控制储存库获取对所述第一文件集的一个或多个文件的更新,并且将所述更新存储在所述第一电子计算设备(108)上。
3.如权利要求1所述的方法,其特征在于,所述变更集标识所述变更集要被提交给的集中式源控制***(102)。
4.如权利要求1所述的方法,其特征在于,所述变更集包括来自未包括在所述第一文件集中的一个或多个源代码分支的源代码变更。
5.如权利要求1所述的方法,其特征在于,所述第一源控制储存库驻留在所述第一电子计算设备(108)上。
6.如权利要求1所述的方法,其特征在于,还包括:
将所述第一文件集的至少一部分发送到第三电子计算设备,所述第三电子计算设备是第二分布式源控制***(112)的一部分;
从所述第三电子计算设备接收一个或多个文件的第三集合,所述一个或多个文件的第三集合是第一文件集的第二变更集;
处理所述第二变更集以使得所述第二变更集采用与所述第一源控制储存库兼容的格式;以及
当所述第二变更集采用与所述第一源控制储存库兼容的格式时,将所述第二变更集提交给所述第一源控制储存库。
7.第一电子计算设备(108),包括:
处理单元;以及
***存储器,所述***存储器包括在由所述处理单元执行时致使所述第一电子计算设备(108)执行以下动作的指令:
从第一源控制储存库获取一个或多个文件的第一集合,所述第一源控制储存库是集中式源控制***(102)中的源控制储存库;
将第一文件集存储在所述第一电子计算设备(108)上;
从第二电子计算设备(206)接收对所述第一文件集的请求,所述第二电子计算设备(206)是第一分布式源控制***(110)中的电子计算设备;
作为所述请求的结果,将所述第一文件集发送到所述第二电子计算设备(206);
从所述第二电子计算设备(206)接收一个或多个文件的第二集合,所述一个或多个文件的第二集合是所述第一文件集的变更集;以及
处理所述变更集以使得所述变更集采用与所述第一源控制储存库兼容的格式;以及
当所述变更集采用与所述第一源控制储存库兼容的格式时,将所述变更集提交给所述第一源控制储存库。
8.如权利要求7所述的第一电子计算设备(108),其特征在于,所述第一电子计算设备(108)支持混合模型,所述混合模型准许从作为所述集中式源控制***的一部分的第一客户机计算机以及从作为所述分布式源控制***(110)的一部分的第二客户机计算机(206)进行代码登记取出和代码登记存入。
9.如权利要求7所述的第一电子计算设备(108),其特征在于,还包括周期性地从所述第一源控制储存库获取对所述第一文件集的一个或多个文件的更新,并且将所述更新存储在所述第一电子计算设备(108)上。
10.一种包括在由电子计算设备(108)执行时致使所述电子计算设备(108)执行以下动作的指令的计算机可读存储介质:
从第一源控制储存库获取一个或多个文件的第一集合,所述第一源控制储存库是集中式源控制***(102)中的源控制储存库;
将第一文件集存储在第一电子计算设备(108)上;
周期性地从所述第一源控制储存库获取对所述第一文件集的一个或多个文件的更新,并且将所述更新存储在所述电子计算设备(108)上;
从第二电子计算设备(206)接收对所述第一文件集的请求,所述第二电子计算设备(206)是第一分布式源控制***(110)中的电子计算设备;
作为所述请求的结果,将所述第一文件集发送到所述第二电子计算设备(206);
从所述第二电子计算设备(206)接收一个或多个文件的第二集合,所述一个或多个文件的第二集合是所述第一文件集的第一变更集,所述第一变更集包括汇总所述第一变更集中包括的变更的清单,所述第一变更集包括对所述第一文件集的添加和删除,所述第一变更集包括版本化信息,所述第一变更集包括未被包括在所述第一文件集中的一个或多个源代码分支,所述源代码分支中的至少一个是特征分支,所述特征分支包括一个或多个软件特征或者一个或多个软件漏洞修补;
处理所述第一变更集以使得所述第一变更集采用与所述第一源控制储存库兼容的格式;
当所述第一变更集采用与所述第一源控制储存库兼容的格式时,将所述第一变更集提交给所述第一源控制储存库。
将所述第一文件集发送到第三电子计算设备,所述第三电子计算设备是第二分布式源控制***(112)的一部分;
从所述第三电子计算设备接收一个或多个文件的第三集合,所述一个或多个文件的第三集合是所述第一文件集的第二变更集,所述第二变更集包括对所述第一文件集的添加和删除,所述第二变更集包括版本化信息,所述第二变更集包括未被包括在所述第一文件集中的一个或多个源代码分支,所述源代码分支中的至少一个是特征分支,所述特征分支包括一个或多个软件特征或者一个或多个软件漏洞修补;
处理所述第二变更集以使得所述第二变更集采用与所述第一源控制储存库兼容的格式;以及
当所述第二变更集采用与所述第一源控制储存库兼容的格式时,将所述第二变更集提交给所述第一源控制储存库。
CN201210544598.1A 2011-12-16 2012-12-14 在集中式源控制环境中使用分布式源控制 Active CN103019718B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/328,272 US20130159365A1 (en) 2011-12-16 2011-12-16 Using Distributed Source Control in a Centralized Source Control Environment
US13/328,272 2011-12-16

Publications (2)

Publication Number Publication Date
CN103019718A true CN103019718A (zh) 2013-04-03
CN103019718B CN103019718B (zh) 2016-07-06

Family

ID=47968356

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210544598.1A Active CN103019718B (zh) 2011-12-16 2012-12-14 在集中式源控制环境中使用分布式源控制

Country Status (5)

Country Link
US (2) US20130159365A1 (zh)
EP (1) EP2791788B1 (zh)
CN (1) CN103019718B (zh)
HK (1) HK1181865A1 (zh)
WO (1) WO2013090870A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893026A (zh) * 2016-03-28 2016-08-24 乐视控股(北京)有限公司 软件版本管理***及方法
CN106886420A (zh) * 2017-03-30 2017-06-23 努比亚技术有限公司 一种程序代码管理装置、方法及程序代码管理器
CN109918021A (zh) * 2014-11-05 2019-06-21 华为技术有限公司 数据处理方法和装置
CN113728306A (zh) * 2018-12-20 2021-11-30 罗布乐思公司 开发者协同控制***
CN114238261A (zh) * 2015-06-29 2022-03-25 微软技术许可有限责任公司 与旧有工具集成的云原生文档

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130159365A1 (en) 2011-12-16 2013-06-20 Microsoft Corporation Using Distributed Source Control in a Centralized Source Control Environment
US9575764B1 (en) * 2013-03-15 2017-02-21 Atlassian Pty Ltd Synchronizing branches of computer program source code
US9448791B1 (en) * 2013-11-06 2016-09-20 Amazon Technologies, Inc. Synchronizing source code objects and software development workflow objects
US10223385B2 (en) * 2013-12-19 2019-03-05 At&T Intellectual Property I, L.P. Systems, methods, and computer storage devices for providing third party application service providers with access to subscriber information
US9959097B2 (en) * 2016-03-09 2018-05-01 Bank Of America Corporation SVN interface system for heterogeneous development environments
US10754761B2 (en) * 2016-11-11 2020-08-25 Atlassian Pty Ltd Systems and methods for testing source code
US10162626B2 (en) 2017-04-10 2018-12-25 Microsoft Technology Licensing, Llc Ordered cache tiering for program build files
US11157510B2 (en) * 2018-02-28 2021-10-26 Chaossearch, Inc. Data normalization using data edge platform
US11385940B2 (en) 2018-10-26 2022-07-12 EMC IP Holding Company LLC Multi-cloud framework for microservice-based applications
US11720347B1 (en) * 2019-06-12 2023-08-08 Express Scripts Strategic Development, Inc. Systems and methods for providing stable deployments to mainframe environments
CN110555317B (zh) * 2019-09-09 2023-04-07 浪潮通用软件有限公司 一种应用文件更改处理方法、装置及***
US11533317B2 (en) * 2019-09-30 2022-12-20 EMC IP Holding Company LLC Serverless application center for multi-cloud deployment of serverless applications
CN114661339B (zh) * 2022-05-26 2022-08-16 浙江所托瑞安科技集团有限公司 一种实现本地数据自动提交到远程服务器的方法及装置
CN115629746B (zh) * 2022-12-22 2023-03-17 西安葡萄城软件有限公司 一种低代码平台多人协同开发的方法及***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078205A1 (en) * 2000-11-17 2002-06-20 Lloyd Nolan Resource control facility
CN101572724A (zh) * 2009-03-05 2009-11-04 国电南瑞科技股份有限公司 一种软件版本管理***
CN101661388A (zh) * 2008-08-29 2010-03-03 国际商业机器公司 版本管理***和方法以及同步控制设备和方法
CN101753609A (zh) * 2008-12-15 2010-06-23 ***通信集团公司 分布式***版本控制方法、节点及***
US7805420B2 (en) * 2006-11-20 2010-09-28 Microsoft Corporation Versioning and concurrency control for multiple client access of data

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2273183A (en) * 1992-12-04 1994-06-08 Ibm Replicated distributed databases.
US5675802A (en) 1995-03-31 1997-10-07 Pure Atria Corporation Version control system for geographically distributed software development
US5721914A (en) * 1995-09-14 1998-02-24 Mci Corporation System and method for hierarchical data distribution
US6338092B1 (en) 1998-09-24 2002-01-08 International Business Machines Corporation Method, system and computer program for replicating data in a distributed computed environment
US6944662B2 (en) 2000-08-04 2005-09-13 Vinestone Corporation System and methods providing automatic distributed data retrieval, analysis and reporting services
US6681382B1 (en) 2000-09-18 2004-01-20 Cisco Technology, Inc. Method and system for using virtual labels in a software configuration management system
US7331034B2 (en) 2001-01-09 2008-02-12 Anderson Thomas G Distributed software development tool
US7779387B2 (en) 2004-04-15 2010-08-17 Microsoft Corporation Offline source code control
US7831556B2 (en) 2005-03-17 2010-11-09 International Business Machines Corporation Differential rendering and refreshing a portal page with a page delta
KR101041092B1 (ko) * 2006-02-10 2011-06-13 조완희 웹 폴더를 이용한 효과적인 피투피 시스템
US20100131940A1 (en) 2008-11-26 2010-05-27 Microsoft Corporation Cloud based source code version control
US20130159365A1 (en) 2011-12-16 2013-06-20 Microsoft Corporation Using Distributed Source Control in a Centralized Source Control Environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078205A1 (en) * 2000-11-17 2002-06-20 Lloyd Nolan Resource control facility
US7805420B2 (en) * 2006-11-20 2010-09-28 Microsoft Corporation Versioning and concurrency control for multiple client access of data
CN101661388A (zh) * 2008-08-29 2010-03-03 国际商业机器公司 版本管理***和方法以及同步控制设备和方法
CN101753609A (zh) * 2008-12-15 2010-06-23 ***通信集团公司 分布式***版本控制方法、节点及***
CN101572724A (zh) * 2009-03-05 2009-11-04 国电南瑞科技股份有限公司 一种软件版本管理***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PLUSKID: "git and subversion", 《HTTP://LIFEGOO.PLUSKID.ORG/?P=24》, 14 June 2007 (2007-06-14), pages 2 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109918021A (zh) * 2014-11-05 2019-06-21 华为技术有限公司 数据处理方法和装置
CN114238261A (zh) * 2015-06-29 2022-03-25 微软技术许可有限责任公司 与旧有工具集成的云原生文档
CN105893026A (zh) * 2016-03-28 2016-08-24 乐视控股(北京)有限公司 软件版本管理***及方法
CN106886420A (zh) * 2017-03-30 2017-06-23 努比亚技术有限公司 一种程序代码管理装置、方法及程序代码管理器
CN106886420B (zh) * 2017-03-30 2020-10-09 广州柔视智能科技有限公司 一种程序代码管理装置、方法及程序代码管理器
CN113728306A (zh) * 2018-12-20 2021-11-30 罗布乐思公司 开发者协同控制***
CN113728306B (zh) * 2018-12-20 2023-04-11 罗布乐思公司 开发者协同控制***

Also Published As

Publication number Publication date
CN103019718B (zh) 2016-07-06
HK1181865A1 (zh) 2013-11-15
EP2791788B1 (en) 2019-07-31
US10025793B2 (en) 2018-07-17
US20130159365A1 (en) 2013-06-20
EP2791788A4 (en) 2015-08-05
WO2013090870A1 (en) 2013-06-20
US20160004719A1 (en) 2016-01-07
EP2791788A1 (en) 2014-10-22

Similar Documents

Publication Publication Date Title
CN103019718A (zh) 在集中式源控制环境中使用分布式源控制
US11797479B2 (en) Integrating object-based data integration tool with a version control system in centralized and decentralized environments
US10740093B2 (en) Advanced packaging techniques for improving work flows
CN109947767A (zh) 多重租赁数据库***中的***共享类型
CN110147369A (zh) 多重租赁数据库***中的数据分离和写入重新定向
CN110019215A (zh) 多重租赁数据库***中的键模式管理
CN100555279C (zh) 不用快照的项同步***和方法
CN109947773A (zh) 在多租户数据库***中部署对键模式的改变
US20060212543A1 (en) Modular applications for mobile data system
CN101231587B (zh) 用于软件配置管理库互操作的计算机方法和设备
CN104317974A (zh) 一种可重构的erp***中多源数据导入方法
CN103842996A (zh) 合并来自多个源的播放列表
US20140365436A1 (en) Automated synchronization of client-side database with server-side database over a communications network
CN109804361A (zh) 计算***中的文件同步
US20120089960A1 (en) Extensible collaborative software modeling
CN1965295A (zh) 发布管理方法
CN105488223A (zh) 业务数据事件的分析订阅方法及***
CN102224492A (zh) 数据维护***
US10572247B2 (en) Prototype management system
WO2006113581A2 (en) Mapping information technology system architecture
US11099837B2 (en) Providing build avoidance without requiring local source code
CN114780138B (zh) 流场模拟软件代码版本管理方法、装置和存储介质
CN101753619A (zh) 用于扩展服务模型的方法和***
CN104572439B (zh) 用于生成关于潜在的回归的警告方法和***
CN109240738B (zh) 数据库权限管理方法、装置以及计算机设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1181865

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150727

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1181865

Country of ref document: HK