US20130159365A1 - Using Distributed Source Control in a Centralized Source Control Environment - Google Patents
Using Distributed Source Control in a Centralized Source Control Environment Download PDFInfo
- Publication number
- US20130159365A1 US20130159365A1 US13/328,272 US201113328272A US2013159365A1 US 20130159365 A1 US20130159365 A1 US 20130159365A1 US 201113328272 A US201113328272 A US 201113328272A US 2013159365 A1 US2013159365 A1 US 2013159365A1
- Authority
- US
- United States
- Prior art keywords
- source control
- files
- computing device
- electronic computing
- change set
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/116—Details of conversion of file system types or formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
- G06F16/1844—Management specifically adapted to replicated file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
Definitions
- Source control systems are used during software development for revision control of source code.
- Centralized source control systems permit revision control from a central location, typically based on a client/server model.
- a server computer typically maintains a source code repository.
- a software developer on a client computer may check out source code from the source code repository and check the source code back in to the source code repository, for example after code changes are made.
- Distributed source control systems provide for revision control based on a peer to peer model.
- a working copy of the source code on each peer node for example on each client computer, may constitute a source code repository.
- Distributed source control systems are commonly referred to as decentralized source control systems.
- Embodiments of the disclosure are directed to a method for using a distributed source control system with a centralized source control system.
- a first electronic computing device On a first electronic computing device, a first set of files is obtained from a source control repository.
- the first set of files comprises all or part of a code base in the centralized source control system.
- the source control repository is a source control repository in the centralized source control system.
- the first set of files is stored on the first electronic computing device.
- a request is received for at least part of the code base from a second electronic computing device.
- the second electronic computing device is an electronic computing device in a distributed source control system.
- At least a part of the first set of files is sent to the second electronic computing device.
- a second set of files is received from the second electronic computing device.
- the second set of files is a change set for the first set of files.
- the change set is processed so that the change set is in a format compatible with the first source control repository.
- the change set is submitted to the first source control repository.
- FIG. 1 shows an example system that supports the use of a distributed source control system in a centralized source control environment.
- FIG. 2 shows example components of the interface server computer and the distributed source control system of FIG. 1 .
- FIG. 3 shows an example flowchart of a method for using a distributed source control system with a centralized source control system.
- FIG. 4 shows example components of the interface server computer of FIG. 1 .
- the present application is directed to systems and methods for using a distributed source control system in a centralized source control environment.
- a replica of a source code repository is obtained from a centralized source control system and stored on a server computer.
- the replica of the source code repository corresponds to a software development project that a user is working on.
- the replica of the source code repository is used as a software repository for the distributed source control system.
- the replica of the source code repository is updated periodically, mirroring changes made to source code repository on the centralized source control system.
- the replica of the source code repository is referred to as a team hub.
- the distributed source control system typically comprises a plurality of client computers.
- the software developer requests source code from the team hub.
- the request may be for a complete code base of the software development project. In other examples, the request may be for only a portion of the code base for the software development project.
- a work area for the source code is created on the client computer. The source code obtained from the team hub is stored in the work area.
- the software developer may edit one or more source code files stored in the work area.
- the one or more source code files are packaged into a format that is compatible with the centralized source control system.
- the packaged files comprising edits to the source code files made on the distributed source control system, are then submitted to the centralized source control system to be checked in. In this manner, one or more files may be obtained from the centralized source control system, edited on the distributed source control system and then checked into the centralized source control system.
- FIG. 1 shows an example system 100 that supports the use of a distributed source control system in a centralized source control environment.
- the example system 100 includes centralized source control systems 102 , 104 , 106 , interface server computer 108 and distributed source control systems 110 and 112 .
- the example centralized source control systems 102 , 104 , 106 are revision and version control systems for managing changes to computer documents and files.
- a repository of the computer documents and files are typically stored in a centralized location, typically on one or more server computers.
- the centralized source control systems 102 , 104 , 106 support a client/server model.
- a centralized source control system is the Team Foundation Server source control system from Microsoft Corporation of Redmond, Wash.
- a second example is the Perforce source control system from Perforce Software.
- Other examples of centralized source control systems are possible. More or fewer centralized source control systems may be included in the example system 100 .
- the example interface server computer 108 provides bridging technology that permits the centralized source control systems 102 , 104 , 106 to operate with the distributed source control systems 110 , 112 .
- the interface server computer 108 obtains replicas of source code repositories stored on the centralized source control systems 102 , 104 and 106 .
- the replicas typically include all branches in each source code repository and a full history of changes made to the source code repository.
- the replicas are stored on the interface server computer 108 .
- the interface server computer 108 also processes files edited on the distributed source control system 110 , 112 into a format compatible for checking the edited files into the centralized source control systems 102 , 104 , 106 .
- the team hub and check-in functionality of the interface server computer 108 may be incorporated in one or more of the centralized source control systems 102 , 104 , 106 .
- a plurality of team hubs may be used. For example, there may be a separate team hub for each project with each team hub providing a replica of the source code repository for a different project.
- one or more files edited on one of distributed source control system 110 , 112 are packaged to be checked into one of the centralized source control systems 102 , 104 , 106 .
- the interface server computer 108 directs changes of checked out files from the distributed source control system on which the changes are made to the centralized source control system in which the changes are checked in.
- the interface server computer 108 may be configured to direct changes from one distributed source control system to a specific centralized source control system.
- the interface server computer 108 may maintain an internal table of which distributed source control system corresponds to which centralized source control system. For example, if a request from a client computer in one distributed source control system is made for files for a project included in a team hub associated with a specific centralized source control system, the interface server computer 108 may maintain a table associating the distributed source control system with the centralized source control system.
- the example distributed source control systems 110 , 112 implement a peer-to-peer model of source control.
- each peer mode typically a client computer, stores a working copy of a source code repository.
- One or more code branches may be created from the working copy.
- Software developers may make changes to software files online or offline.
- Software developers on different client computers may share edited files directly, obviating the need to transfer files to a centralized location.
- Two examples of a distributed source control system are the Mercurial distributed source control system and the Git distributed source control system. Other examples of distributed source control systems are possible. More or fewer distributed source control systems may be included in the example system 100 .
- the example system 100 also supports a hybrid model wherein software development teams can use tools associated with a centralized source control system and also use tools associated with a distributed source control system.
- a software developer can use a client computer to check files in and out of a source code repository on a centralized source control system, for example on centralized source control system 102 , using tools for check-in and check-out associated with centralized source control system 102 .
- the same software developer can also use the client computer as part of a distributed source control system, for example distributed source control system 110 , to work offline, share files with other client computers in the distributed source control system and use tools associated with the distributed source control system.
- the software developer may also create code branches on the distributed software control system.
- the code branches typically are associated with new software features being developed or bug fixes being made.
- the code branches may be shared with other developers. Multiple check-ins can be done on the code branches.
- the software developer may use standard tools for pre check-in validation that were created around the centralized source control system to work with changes developed in their distributed source control system work area.
- FIG. 2 shows an example system 200 that describes the operation of interface server computer 108 and distributed source control system 110 in more detail.
- the example system 200 includes the centralized source control system 102 , the interface server computer 108 and the distributed source control system 110 .
- the interface server computer 108 includes an example team hub module 202 and an example change set check-in module 204 .
- the distributed source control system 110 includes client computers 206 and 210 .
- Client computer 206 includes work area 208 and client computer 210 includes work area 212 . More or fewer client computers may be included in the distributed source control system 110 .
- the team hub module 202 obtains and stores a replica of a source code repository for a project from the centralized source control system 102 .
- the replica of the source code repository includes copies of all the files, all the code branches and all the history records for the project from the source code repository.
- the team hub module obtains periodic updates of the source code repository from the centralized source control system 102 .
- the periodic updates may occur at time intervals of 5 to 15 minutes. Other time intervals are possible.
- the obtaining of the periodic updates also known as mirroring, may be triggered using commit notifications from the centralized source control system 102 .
- client computer 206 sends a request for the source code to the team hub module 202 .
- the request may be for the entire code base for the project or the request may be for a portion of the code base for the project.
- the source code obtained is sometimes referred to as a software enlistment or work area.
- the source code is stored in a work area 208 on client computer 206 .
- the software developer on client computer 206 may edit one or more files stored in work area 208 .
- the software developer may create one or more new code branches of the source code stored in work area 208 , edit one or more source code files in the one or more code branches and check the edited code back into work area 208 .
- client computer 210 when a software developer on client computer 210 has a need to access source code for the project, client computer 210 sends a request for the source code to the team hub module 202 .
- the request may be for the entire code base for the project or the request may be for a portion of the code base for the project.
- the source code is stored in a work area 212 on client computer 206 .
- the software developer on client computer 210 may edit one or more files stored in work area 212 .
- the software developer may create one or more code branches of the source code stored in work area 212 , edit one or more source code files in the one or more code branches and check the edited code back into work area 212 .
- the software developers on client computers 206 and 210 may also work together on a specific software feature. Typically, this is done by creating a separate branch of the source code for the feature. For example, one software developer, for example the software developer on client computer 206 , may write code for the feature and another software developer, for example the software developer on client computer 210 may test the code for the feature.
- the software developers on client computers 206 and 210 may want to check updated source files into centralized source control system 102 .
- the updated source files and other changes are packaged into a change set and submitted to a centralized source control system for check-in.
- the distributed source control system 110 may use different commands for check-in and a different file format for check-in than is used in centralized source control system 102 . Therefore, the change set needs to be processed into a format that is compatible with centralized source control system 102 .
- the change set typically includes all source files that have been added, deleted or modified, typically for work done in a code branch, for example for bug fixes or for a specific feature.
- the change set also includes a manifest or description of the changes that were made. For example, if a user added file A, edited file A, edited file B, added file C and deleted file C over five separate distributed source control system check-ins, the change set includes file A, file B and the manifest.
- the change set typically includes versioning information, timestamps, authors, etc.
- the change set is packaged into one file, for example a zip file that includes all the changed source code files and the manifest.
- the changed files are provided individually.
- the change set comprises an XML file or a script.
- the change set check-in module 204 processes the change set into a format compatible with centralized source control system 102 . Because the source code changes are in a format compatible with centralized source control system 102 , the source code changes may be now be checked into the centralized source control system 102 . As a result, changes made on client computers 206 and 210 in a distributed source control system may be checked-in on centralized source control system 102 .
- the change set check-in module 204 also handles situations where multiple centralized source control systems and multiple distributed source code control systems are used, for example system 100 in FIG. 1 .
- each distributed source control system 110 , 112 may have source code changes that are directed to any one of centralized source control systems 102 , 104 , 106 .
- source code updates received from distributed source control systems 110 , 112 include an indication of which centralized source control system the source code updates are directed to.
- the distributed source code enlistments typically include a team hub client configuration file that points the distributed source code enlistments to the appropriate target centralized source code control system. Team hub client tools may then be used to package the source code changes and to direct the packaged source code changes to the appropriate target centralized source code control system.
- the change set check-in module 204 includes routing information that associates a distributed source control system with a centralized source control system. When source code updates are received from a distributed source control system, the change set check-in module 204 formats the source code updates to be compatible with the appropriate centralized source control system.
- the centralized source control system 102 may receive source code changes on one or more feature code branches from a plurality of client computers, for example from client computers 206 and 210 in distributed source control system 110 and from one or more client computers in distributed source control system 112 .
- source code changes on a code branch are submitted to centralized source control system 102 , the changes are eventually mirrored to team hub module 202 .
- the code branch may be deleted in the distributed source control system 112 because the code branch is now redundant.
- conflicts occur.
- the conflicts are typically the result of one or more software developers making changes to the source code repository on the centralized source control system after another software developer has obtained files from the source code repository.
- a software developer on client computer 206 is working in a feature code branch from a code base obtained from team hub module 202 and another software developer on client computer 210 made changes to this same code base and checked those changes back into the source code repository in centralized source control system 102 before the software developer on client computer 206 checked similar files into centralized source control system 102 , one or more files now stored in the centralized source control system 102 may now be different than the files being submitted by the software developer on client computer 206 .
- the centralized source control system 102 may reject source code changes submitted by the software developer on client computer 206 .
- the software developer on client computer 206 may need to manually resolve the conflicts before re-submitting the source code changes to centralized source control system 102 .
- the software developer on client computer 206 manually resolves the conflicts by obtaining the most recent source code from team hub module 202 , merging the source code changes in the feature branch with the most recent obtained source code and re-submitting the source code changes.
- FIG. 3 shows an example flowchart of a method 300 for using a distributed source control system with a centralized source control system.
- a first set of files is obtained from a centralized source control repository.
- the centralized source control repository is part of a centralized source control system, such as the Team Foundation Server source control system from Microsoft Corporation.
- the first set of files typically comprises a code base for a project.
- the code base is typically obtained from the centralized source code repository based on a request from a server computer in the centralized source control system, for example from interface server computer 108 (team hub server computer).
- the team hub server computer is different from a server computer that hosts the centralized source code repository.
- the team hub server computer is the same server computer that hosts the centralized source code repository.
- the team hub server computer is a developer's computer.
- the obtained code base is stored on the team hub server computer.
- the team hub server computer acts as a source code hub for client computers in a distributed source control system.
- One or more client computers may request all or part of the code base.
- An example of a source code hub is team hub module 202 on interface server computer 108 .
- a request is received for the code base from a client computer, for example from client computer 206 , on a distributed source control system.
- the request may be for the complete code base stored on the team hub server computer.
- the request may be for a portion of the code base stored on the team hub server computer.
- the request comprises checking out the portion of the code base from the team hub server computer.
- more than one client computer for example client computer 210 may check out all or part of the code base.
- Checking out files refers to the team hub server computer making a copy of the requested files and sending the requested files to the client computer making the request for the files.
- the requested files are sent to client computer.
- the files are received at client computer 206 and stored in a work area, for example in work area 208 on client computer 206 .
- the work area is a memory area on client computer 206 in which the files may be edited and from which one or more code branches may be created or deleted.
- a code branch corresponds to a specific feature or a bug fix in the project.
- a code branch may represent the code base at a certain date in time or the code base may represent a version of the code base dedicated to a specific operation, such as testing.
- Code branches typically correspond to different releases.
- a source code file may be modified multiple times on different code branches. For example, file X may have been modified N times on branch Y and M times on branch Z. Other examples of code branches are possible.
- the modified files for the code branches may be checked into centralized source control system 102 , as discussed herein.
- a change set is received from client computer 206 .
- the change set includes files that were added, deleted or modified on client computer 206 .
- the change set also includes a manifest that provides a description of changes made to the source code on client computer 206 .
- the manifest is needed to replicate the changes from the distributed source control system to the centralized source control system with the highest fidelity. For example, file A may be renamed to file B, file C may be copied to file D and then modified, file E may be deleted, etc.
- the change set also includes author names, version numbers, timestamps, etc. Other information may be included in the change set.
- the change set may comprise one file, for example a zip file, or the change set may comprise a plurality of files.
- the change set may comprise and XML file or a script. Other examples of change sets are possible.
- the change set may include changes to source files made by one or more other client computers, for example client computer 210 .
- client computer 210 client computers
- individual client computers in the distributed source control system may communicate code changes with each other.
- developers may be working directly with a centralized source control system, for example centralized source control system 102 , in parallel with other developers that may be working directly with the distributed source control system.
- the change set is processed in the change set check-in module 204 to be compatible for check-in at the centralized source control system.
- the centralized source control system 102 typically uses a different syntax and procedures for checking files in and out than used in the distributed source control system 110 .
- one or more files in the second set of files may be formatted into a format compatible with the centralized source control system 102 .
- the change set is submitted for check-in to the centralized source control system 102 .
- the tool that packages the change set also includes an indication of the type of distributed source control system being used, for example the Mercurial distributed source control system or the Git distributed source control system.
- the change set check-in module 204 makes a determination from the change set as to which distributed source control system is being used.
- the change set is packaged in a format independent of the distributed source control system being used.
- the change set check-in module 204 also makes a determination as to which centralized source control system the change set is to be directed to. As a result of the determination of the distributed source control system from which the change set originated and the centralized source control system to which the change set is to be checked into, the check-in module 204 may need to modify or reformat one or more files in the change set so that the change set is compatible with centralized source control system to which the change set is to be checked into.
- the centralized source control system does not need to know on which distributed source control system the change set was created and at the time the distributed source control system creates and packages the change set, the distributed source control system does not need to know which centralized source control system the change set is directed to.
- each distributed source control system only needs to direct change sets to the change set check-in module 204 and does not need a link to every centralized source control system.
- each centralized source control system only needs to have a link to the check-in module 204 and does not need a link to every distributed source control system.
- client computer 206 may send the packaged change set directly to centralized source control system 102 .
- the packaged change set may be sent directly to centralized source control system 102 , even for the case where multiple centralized source control systems are used. For example, changes on a branch may be submitted directly to centralized source control system 102 or to a specified centralized source control system.
- server computer 108 is a computing device.
- Server computer 108 can include input/output devices, a central processing unit (“CPU”), a data storage device, and a network device.
- Server computer 108 can also be a mobile computing device, such as a laptop, tablet, convertible, or other handheld device like a smartphone or cellular telephone.
- server computer 108 typically includes at least one processing unit 402 and system memory 404 .
- the system memory 404 may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two.
- System memory 404 typically includes an operating system 406 suitable for controlling the operation of a client computer.
- the system memory 404 may also include one or more software applications 408 and may include program data.
- server computer 108 may have additional features or functionality.
- server computer 108 may also include computer readable media.
- Computer readable media can include both computer readable storage media and communication media.
- Computer readable storage media is physical media, such as data storage devices (removable and/or non-removable) including magnetic disks, optical disks, or tape. Such additional storage is illustrated in FIG. 4 by removable storage 410 and non-removable storage 412 .
- Computer readable storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data.
- Computer readable storage media can include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by server computer 108 . Any such computer readable storage media may be part of server computer 108 .
- Server computer 108 may also have input device(s) 414 such as keyboard, mouse, pen, voice input device, touch input device, etc.
- Output device(s) 416 such as a display, speakers, printer, etc. may also be included.
- the input device(s) 414 may comprise any motion detection device capable of detecting the movement or gesture of a user.
- the input device(s) 414 may comprise a Kinect® motion capture device, from Microsoft Corporation, comprising a plurality of cameras and a plurality of microphones.
- the server computer 108 may also contain communication connections 418 that allow the device to communicate with other computing devices 420 , such as over a network in a distributed computing environment, for example, an intranet or the Internet.
- Communication connections 418 are one example of communication media.
- Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
- Embodiments of the present disclosure may be practiced via a system-on-a-chip (SOC) where each or many of the components illustrated in FIG. 4 may be integrated onto a single integrated circuit.
- SOC system-on-a-chip
- Such an SOC device may include one or more processing units, graphics units, communication units, system virtualization units and various application functionality all of which are integrated (or “burned”) onto the chip substrate as a single integrated circuit.
- the functionality, described above, with respect to the present disclosure may be operated via application-specific logic integrated with other components of the server computer 108 on the single integrated circuit (chip).
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
A method is presented for using a distributed source control system with a centralized source control system. A first set of files is obtained from a source control repository and stored on a first electronic computing device. The first set of files comprises all or part of a code base in the centralized source control system. A request is received for at least part of the code base from a second electronic computing device in a distributed source control system. As a result of the request, at least a part of the first set of files is sent to the second electronic computing device. A change set for the first set of files is received from the second electronic computing device. The change set is processed to be in a format compatible with the source control repository. The change set is submitted to the source control repository.
Description
- Source control systems are used during software development for revision control of source code. Centralized source control systems permit revision control from a central location, typically based on a client/server model. In a centralized source control system, a server computer typically maintains a source code repository. A software developer on a client computer may check out source code from the source code repository and check the source code back in to the source code repository, for example after code changes are made.
- Distributed source control systems provide for revision control based on a peer to peer model. In a distributed source control system, a working copy of the source code on each peer node, for example on each client computer, may constitute a source code repository. Distributed source control systems are commonly referred to as decentralized source control systems.
- Software development companies typically either use a centralized source control system or a distributed source control system for a project, but not both. Companies typically have a large investment in their centralized source control systems and may find it difficult and expensive to change to a different type of source control system. Many developers like to use a distributed source control system but also may need to check their source code into a company's centralized source control system.
- Embodiments of the disclosure are directed to a method for using a distributed source control system with a centralized source control system. On a first electronic computing device, a first set of files is obtained from a source control repository. The first set of files comprises all or part of a code base in the centralized source control system. The source control repository is a source control repository in the centralized source control system. The first set of files is stored on the first electronic computing device. A request is received for at least part of the code base from a second electronic computing device. The second electronic computing device is an electronic computing device in a distributed source control system. As a result of the request, at least a part of the first set of files is sent to the second electronic computing device. A second set of files is received from the second electronic computing device. The second set of files is a change set for the first set of files. The change set is processed so that the change set is in a format compatible with the first source control repository. When the change set is in a format compatible with the first source control repository, the change set is submitted to the first source control repository.
- This Summary is provided to introduce a selection of concepts, in a simplified form, that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in any way to limit the scope of the claimed subject matter.
-
FIG. 1 shows an example system that supports the use of a distributed source control system in a centralized source control environment. -
FIG. 2 shows example components of the interface server computer and the distributed source control system ofFIG. 1 . -
FIG. 3 shows an example flowchart of a method for using a distributed source control system with a centralized source control system. -
FIG. 4 shows example components of the interface server computer ofFIG. 1 . - The present application is directed to systems and methods for using a distributed source control system in a centralized source control environment. Using the systems and methods, a replica of a source code repository is obtained from a centralized source control system and stored on a server computer. Typically, the replica of the source code repository corresponds to a software development project that a user is working on. The replica of the source code repository is used as a software repository for the distributed source control system. The replica of the source code repository is updated periodically, mirroring changes made to source code repository on the centralized source control system. In this disclosure, the replica of the source code repository is referred to as a team hub.
- The distributed source control system typically comprises a plurality of client computers. When a software developer on one of the client computers needs to do work on the project, the software developer requests source code from the team hub. In some examples, the request may be for a complete code base of the software development project. In other examples, the request may be for only a portion of the code base for the software development project. When the request for the source code is made, a work area for the source code is created on the client computer. The source code obtained from the team hub is stored in the work area.
- The software developer may edit one or more source code files stored in the work area. When the software developer has completed editing the one or more source code files, the one or more source code files are packaged into a format that is compatible with the centralized source control system. The packaged files, comprising edits to the source code files made on the distributed source control system, are then submitted to the centralized source control system to be checked in. In this manner, one or more files may be obtained from the centralized source control system, edited on the distributed source control system and then checked into the centralized source control system.
-
FIG. 1 shows anexample system 100 that supports the use of a distributed source control system in a centralized source control environment. Theexample system 100 includes centralizedsource control systems interface server computer 108 and distributedsource control systems 110 and 112. The example centralizedsource control systems source control systems - Software developers, typically using a client computer check files out from the centralized location, make changes to the checked out files and then check the files back in to the centralized location. One example of a centralized source control system is the Team Foundation Server source control system from Microsoft Corporation of Redmond, Wash. A second example is the Perforce source control system from Perforce Software. Other examples of centralized source control systems are possible. More or fewer centralized source control systems may be included in the
example system 100. - The example
interface server computer 108 provides bridging technology that permits the centralizedsource control systems source control systems 110, 112. Theinterface server computer 108 obtains replicas of source code repositories stored on the centralizedsource control systems - The replicas, also known in this disclosure as the team hub, are stored on the
interface server computer 108. Theinterface server computer 108 also processes files edited on the distributedsource control system 110, 112 into a format compatible for checking the edited files into the centralizedsource control systems interface server computer 108 may be incorporated in one or more of the centralizedsource control systems - Typically, one or more files edited on one of distributed
source control system 110, 112 are packaged to be checked into one of the centralizedsource control systems interface server computer 108 directs changes of checked out files from the distributed source control system on which the changes are made to the centralized source control system in which the changes are checked in. In examples, theinterface server computer 108 may be configured to direct changes from one distributed source control system to a specific centralized source control system. - In other examples, the
interface server computer 108 may maintain an internal table of which distributed source control system corresponds to which centralized source control system. For example, if a request from a client computer in one distributed source control system is made for files for a project included in a team hub associated with a specific centralized source control system, theinterface server computer 108 may maintain a table associating the distributed source control system with the centralized source control system. - The example distributed
source control systems 110, 112 implement a peer-to-peer model of source control. In the distributedsource control systems 110, 112, each peer mode, typically a client computer, stores a working copy of a source code repository. One or more code branches may be created from the working copy. Software developers may make changes to software files online or offline. Software developers on different client computers may share edited files directly, obviating the need to transfer files to a centralized location. Two examples of a distributed source control system are the Mercurial distributed source control system and the Git distributed source control system. Other examples of distributed source control systems are possible. More or fewer distributed source control systems may be included in theexample system 100. - The
example system 100 also supports a hybrid model wherein software development teams can use tools associated with a centralized source control system and also use tools associated with a distributed source control system. For example, a software developer can use a client computer to check files in and out of a source code repository on a centralized source control system, for example on centralizedsource control system 102, using tools for check-in and check-out associated with centralizedsource control system 102. - The same software developer can also use the client computer as part of a distributed source control system, for example distributed
source control system 110, to work offline, share files with other client computers in the distributed source control system and use tools associated with the distributed source control system. The software developer may also create code branches on the distributed software control system. The code branches typically are associated with new software features being developed or bug fixes being made. The code branches may be shared with other developers. Multiple check-ins can be done on the code branches. The software developer may use standard tools for pre check-in validation that were created around the centralized source control system to work with changes developed in their distributed source control system work area. This is done by packaging data in a common format and either submitting a change set directly to the centralized source control system or submitting the change set to theinterface server computer 108, from where the change set is submitted to the centralized source control system, as explained in more detail later herein. -
FIG. 2 shows anexample system 200 that describes the operation ofinterface server computer 108 and distributedsource control system 110 in more detail. Theexample system 200 includes the centralizedsource control system 102, theinterface server computer 108 and the distributedsource control system 110. Theinterface server computer 108 includes an exampleteam hub module 202 and an example change set check-inmodule 204. The distributedsource control system 110 includesclient computers Client computer 206 includeswork area 208 andclient computer 210 includeswork area 212. More or fewer client computers may be included in the distributedsource control system 110. - In examples, the
team hub module 202 obtains and stores a replica of a source code repository for a project from the centralizedsource control system 102. The replica of the source code repository includes copies of all the files, all the code branches and all the history records for the project from the source code repository. In addition, the team hub module obtains periodic updates of the source code repository from the centralizedsource control system 102. In examples, the periodic updates may occur at time intervals of 5 to 15 minutes. Other time intervals are possible. In examples, the obtaining of the periodic updates, also known as mirroring, may be triggered using commit notifications from the centralizedsource control system 102. - When a software developer on
client computer 206 has a need to access source code for the project,client computer 206 sends a request for the source code to theteam hub module 202. The request may be for the entire code base for the project or the request may be for a portion of the code base for the project. The source code obtained is sometimes referred to as a software enlistment or work area. When the requested source code is obtained fromteam hub module 202, the source code is stored in awork area 208 onclient computer 206. - The software developer on
client computer 206 may edit one or more files stored inwork area 208. In addition, the software developer may create one or more new code branches of the source code stored inwork area 208, edit one or more source code files in the one or more code branches and check the edited code back intowork area 208. - In a similar manner, when a software developer on
client computer 210 has a need to access source code for the project,client computer 210 sends a request for the source code to theteam hub module 202. The request may be for the entire code base for the project or the request may be for a portion of the code base for the project. When the requested source code is obtained fromteam hub module 202, the source code is stored in awork area 212 onclient computer 206. - The software developer on
client computer 210 may edit one or more files stored inwork area 212. In addition, the software developer may create one or more code branches of the source code stored inwork area 212, edit one or more source code files in the one or more code branches and check the edited code back intowork area 212. - The software developers on
client computers client computer 206, may write code for the feature and another software developer, for example the software developer onclient computer 210 may test the code for the feature. - At some point, the software developers on
client computers source control system 102. Typically, on a distributed source control system, the updated source files and other changes are packaged into a change set and submitted to a centralized source control system for check-in. However, the distributedsource control system 110 may use different commands for check-in and a different file format for check-in than is used in centralizedsource control system 102. Therefore, the change set needs to be processed into a format that is compatible with centralizedsource control system 102. - The change set typically includes all source files that have been added, deleted or modified, typically for work done in a code branch, for example for bug fixes or for a specific feature. The change set also includes a manifest or description of the changes that were made. For example, if a user added file A, edited file A, edited file B, added file C and deleted file C over five separate distributed source control system check-ins, the change set includes file A, file B and the manifest. In addition, the change set typically includes versioning information, timestamps, authors, etc. In some examples, the change set is packaged into one file, for example a zip file that includes all the changed source code files and the manifest. In other examples, the changed files are provided individually. In some examples the change set comprises an XML file or a script. The change set check-in
module 204 processes the change set into a format compatible with centralizedsource control system 102. Because the source code changes are in a format compatible with centralizedsource control system 102, the source code changes may be now be checked into the centralizedsource control system 102. As a result, changes made onclient computers source control system 102. - The change set check-in
module 204 also handles situations where multiple centralized source control systems and multiple distributed source code control systems are used, forexample system 100 inFIG. 1 . For example, each distributedsource control system 110, 112 may have source code changes that are directed to any one of centralizedsource control systems - In examples, source code updates received from distributed
source control systems 110, 112 include an indication of which centralized source control system the source code updates are directed to. For example, when distributed source code enlistments are created, the distributed source code enlistments typically include a team hub client configuration file that points the distributed source code enlistments to the appropriate target centralized source code control system. Team hub client tools may then be used to package the source code changes and to direct the packaged source code changes to the appropriate target centralized source code control system. In other examples, the change set check-inmodule 204 includes routing information that associates a distributed source control system with a centralized source control system. When source code updates are received from a distributed source control system, the change set check-inmodule 204 formats the source code updates to be compatible with the appropriate centralized source control system. - The centralized
source control system 102 may receive source code changes on one or more feature code branches from a plurality of client computers, for example fromclient computers source control system 110 and from one or more client computers in distributed source control system 112. Once source code changes on a code branch are submitted to centralizedsource control system 102, the changes are eventually mirrored toteam hub module 202. When mirrored toteam hub module 202, the code branch may be deleted in the distributed source control system 112 because the code branch is now redundant. - Sometimes, when source code updates are submitted to a centralized source control system conflicts occur. The conflicts are typically the result of one or more software developers making changes to the source code repository on the centralized source control system after another software developer has obtained files from the source code repository.
- For example, if a software developer on
client computer 206 is working in a feature code branch from a code base obtained fromteam hub module 202 and another software developer onclient computer 210 made changes to this same code base and checked those changes back into the source code repository in centralizedsource control system 102 before the software developer onclient computer 206 checked similar files into centralizedsource control system 102, one or more files now stored in the centralizedsource control system 102 may now be different than the files being submitted by the software developer onclient computer 206. In situations like this, the centralizedsource control system 102 may reject source code changes submitted by the software developer onclient computer 206. The software developer onclient computer 206 may need to manually resolve the conflicts before re-submitting the source code changes to centralizedsource control system 102. The software developer onclient computer 206 manually resolves the conflicts by obtaining the most recent source code fromteam hub module 202, merging the source code changes in the feature branch with the most recent obtained source code and re-submitting the source code changes. -
FIG. 3 shows an example flowchart of amethod 300 for using a distributed source control system with a centralized source control system. Atoperation 302, a first set of files is obtained from a centralized source control repository. The centralized source control repository is part of a centralized source control system, such as the Team Foundation Server source control system from Microsoft Corporation. The first set of files typically comprises a code base for a project. - The code base is typically obtained from the centralized source code repository based on a request from a server computer in the centralized source control system, for example from interface server computer 108 (team hub server computer). In some examples, the team hub server computer is different from a server computer that hosts the centralized source code repository. In other examples, the team hub server computer is the same server computer that hosts the centralized source code repository. In other examples, the team hub server computer is a developer's computer.
- At
operation 304, the obtained code base is stored on the team hub server computer. The team hub server computer acts as a source code hub for client computers in a distributed source control system. One or more client computers may request all or part of the code base. An example of a source code hub isteam hub module 202 oninterface server computer 108. - At
operation 306, a request is received for the code base from a client computer, for example fromclient computer 206, on a distributed source control system. The request may be for the complete code base stored on the team hub server computer. Alternatively, the request may be for a portion of the code base stored on the team hub server computer. - In some examples, the request comprises checking out the portion of the code base from the team hub server computer. In examples, more than one client computer, for
example client computer 210 may check out all or part of the code base. Checking out files refers to the team hub server computer making a copy of the requested files and sending the requested files to the client computer making the request for the files. - At
operation 308, the requested files are sent to client computer. The files are received atclient computer 206 and stored in a work area, for example inwork area 208 onclient computer 206. The work area is a memory area onclient computer 206 in which the files may be edited and from which one or more code branches may be created or deleted. In examples, a code branch corresponds to a specific feature or a bug fix in the project. For example a code branch may represent the code base at a certain date in time or the code base may represent a version of the code base dedicated to a specific operation, such as testing. Code branches typically correspond to different releases. In addition, a source code file may be modified multiple times on different code branches. For example, file X may have been modified N times on branch Y and M times on branch Z. Other examples of code branches are possible. The modified files for the code branches may be checked into centralizedsource control system 102, as discussed herein. - At
operation 310, a change set is received fromclient computer 206. The change set includes files that were added, deleted or modified onclient computer 206. The change set also includes a manifest that provides a description of changes made to the source code onclient computer 206. The manifest is needed to replicate the changes from the distributed source control system to the centralized source control system with the highest fidelity. For example, file A may be renamed to file B, file C may be copied to file D and then modified, file E may be deleted, etc. - The change set also includes author names, version numbers, timestamps, etc. Other information may be included in the change set. The change set may comprise one file, for example a zip file, or the change set may comprise a plurality of files. In examples, the change set may comprise and XML file or a script. Other examples of change sets are possible.
- In addition to including changes made on
client computer 206, the change set may include changes to source files made by one or more other client computers, forexample client computer 210. In a distributed source control system, individual client computers in the distributed source control system may communicate code changes with each other. In addition, developers may be working directly with a centralized source control system, for example centralizedsource control system 102, in parallel with other developers that may be working directly with the distributed source control system. - At
operation 312, the change set is processed in the change set check-inmodule 204 to be compatible for check-in at the centralized source control system. The centralizedsource control system 102 typically uses a different syntax and procedures for checking files in and out than used in the distributedsource control system 110. When the change set is processed in the change set check-inmodule 204, one or more files in the second set of files may be formatted into a format compatible with the centralizedsource control system 102. Atoperation 314, the change set is submitted for check-in to the centralizedsource control system 102. - When the change set is packaged at
client computer 106, the tool that packages the change set also includes an indication of the type of distributed source control system being used, for example the Mercurial distributed source control system or the Git distributed source control system. When the change set is processed atoperation 312, the change set check-inmodule 204 makes a determination from the change set as to which distributed source control system is being used. The change set is packaged in a format independent of the distributed source control system being used. - The change set check-in
module 204 also makes a determination as to which centralized source control system the change set is to be directed to. As a result of the determination of the distributed source control system from which the change set originated and the centralized source control system to which the change set is to be checked into, the check-inmodule 204 may need to modify or reformat one or more files in the change set so that the change set is compatible with centralized source control system to which the change set is to be checked into. However, at the time of check-in, the centralized source control system does not need to know on which distributed source control system the change set was created and at the time the distributed source control system creates and packages the change set, the distributed source control system does not need to know which centralized source control system the change set is directed to. As a result, for code check-in each distributed source control system only needs to direct change sets to the change set check-inmodule 204 and does not need a link to every centralized source control system. Similarly, for code check-in each centralized source control system only needs to have a link to the check-inmodule 204 and does not need a link to every distributed source control system. - In example systems where only one centralized source control system is used, for example centralized
source control system 102,client computer 206 may send the packaged change set directly to centralizedsource control system 102. In examples, the packaged change set may be sent directly to centralizedsource control system 102, even for the case where multiple centralized source control systems are used. For example, changes on a branch may be submitted directly to centralizedsource control system 102 or to a specified centralized source control system. - With reference to
FIG. 4 , example components ofinterface server computer 108 are shown. In example embodiments,server computer 108 is a computing device.Server computer 108 can include input/output devices, a central processing unit (“CPU”), a data storage device, and a network device.Server computer 108 can also be a mobile computing device, such as a laptop, tablet, convertible, or other handheld device like a smartphone or cellular telephone. - In a basic configuration,
server computer 108 typically includes at least oneprocessing unit 402 andsystem memory 404. Depending on the exact configuration and type of computing device, thesystem memory 404 may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two.System memory 404 typically includes anoperating system 406 suitable for controlling the operation of a client computer. Thesystem memory 404 may also include one ormore software applications 408 and may include program data. - The
server computer 108 may have additional features or functionality. For example,server computer 108 may also include computer readable media. Computer readable media can include both computer readable storage media and communication media. - Computer readable storage media is physical media, such as data storage devices (removable and/or non-removable) including magnetic disks, optical disks, or tape. Such additional storage is illustrated in
FIG. 4 byremovable storage 410 andnon-removable storage 412. Computer readable storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Computer readable storage media can include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed byserver computer 108. Any such computer readable storage media may be part ofserver computer 108.Server computer 108 may also have input device(s) 414 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 416 such as a display, speakers, printer, etc. may also be included. - Consistent with embodiments of the present disclosure, the input device(s) 414 may comprise any motion detection device capable of detecting the movement or gesture of a user. For example, the input device(s) 414 may comprise a Kinect® motion capture device, from Microsoft Corporation, comprising a plurality of cameras and a plurality of microphones.
- The
server computer 108 may also containcommunication connections 418 that allow the device to communicate withother computing devices 420, such as over a network in a distributed computing environment, for example, an intranet or the Internet.Communication connections 418 are one example of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. - Embodiments of the present disclosure may be practiced via a system-on-a-chip (SOC) where each or many of the components illustrated in
FIG. 4 may be integrated onto a single integrated circuit. Such an SOC device may include one or more processing units, graphics units, communication units, system virtualization units and various application functionality all of which are integrated (or “burned”) onto the chip substrate as a single integrated circuit. When operating via an SOC, the functionality, described above, with respect to the present disclosure may be operated via application-specific logic integrated with other components of theserver computer 108 on the single integrated circuit (chip). - The various embodiments described above are provided by way of illustration only and should not be construed to limiting. Various modifications and changes that may be made to the embodiments described above without departing from the true spirit and scope of the disclosure.
Claims (20)
1. A method for using a distributed source control system with a centralized source control system, the method comprising:
on a first electronic computing device, obtaining a first set of one or more files from a first source control repository, the first set of files comprising all or part of a code base in the centralized source control system, the first source control repository being a source control repository in a first centralized source control system;
storing the first set of files on the first electronic computing device;
receiving a request for at least part of the code base from a second electronic computing device, the second electronic computing device being an electronic computing device in a first distributed source control system;
as a result of the request, sending the at least part of the first set of files to the second electronic computing device;
receiving a second set of one or more files from the second electronic computing device, the second set of one or more files being a change set for the first set of files; and
processing the change set so that the change set is in a format compatible with the first source control repository, the change set being processed in a change set check-in module stored on the first electronic computing device; and
when the change set is in a format compatible with the first source control repository, submitting the change set to the first source control repository.
2. The method of claim 1 , further comprising periodically obtaining updates from the first source control repository for one or more files of the first set of files and storing the updates on the first electronic computing device.
3. The method of claim 1 , wherein the change set identifies a centralized source control system to which the change set is to be submitted.
4. The method of claim 1 , wherein the change set includes a manifest that summarizes changes included in the change set.
5. The method of claim 1 , wherein the change set includes additions and deletions to the first set of files.
6. The method of claim 1 , wherein the change set includes versioning information.
7. The method of claim 1 , wherein the change set includes source code changes from one or more source code branches not included in the first set of files.
8. The method of claim 7 , wherein at least one of the source code branches is a feature branch, the feature branch comprising one or more software features or one or more software bug fixes.
9. The method of claim 1 , wherein the second set of one of more files includes a zip file.
10. The method of claim 1 , wherein the second set of one or more files includes an XML file.
11. The method of claim 1 , wherein the second set of one or more files includes a script.
12. The method of claim 1 , wherein the first source control repository resides on the first electronic computing device.
13. The method of claim 1 , further comprising:
sending the at least part of the first set of files to a third electronic computing device, the third electronic computing device being part of a second distributed source control system;
receiving a third set of one or more files from the third electronic computing device, the third set of one or more files being a second change set for the first set of files;
processing the second change set so that the second change set is in a format compatible with the first source control repository; and
when the second change set is in a format compatible with the first source control repository, submitting the second change set to the first source control repository.
14. A first electronic computing device comprising:
a processing unit; and
system memory, the system memory including instructions that, when executed by the processing unit, cause the first electronic computing device to:
obtain a first set of one or more files from a first source control repository, the first source control repository being a source control repository in a centralized source control system;
store the first set of files on the first electronic computing device;
receive a request for the first set of files from a second electronic computing device, the second electronic computing device being an electronic computing device in a first distributed source control system;
as a result of the request, send the first set of files to the second electronic computing device;
receive a second set of one or more files from the second electronic computing device, the second set of one or more files being a change set for the first set of files; and
process the change set so that the change set is in a format compatible with the first source control repository, the change set being processed in a change set check-in module stored on the first electronic computing device; and
when the change set is in a format compatible with the first source control repository, submit the change set to the first source control repository.
15. The first electronic computing device of claim 14 , wherein the first electronic computing device supports a hybrid model, the hybrid model permitting source code check-out and check-in from a first client computer that is part of the centralized source control system and from a second client computer that is part of the distributed source control system.
16. The first electronic computing device of claim 14 , further comprising periodically obtaining updates from the first source control repository for one or more files of the first set of files and storing the updates on the first electronic computing device.
17. The method of claim 1 , wherein the change set identifies a centralized source control system to which the change set is to be submitted.
18. The first electronic computing device of claim 14 , wherein the first source control repository resides on the first electronic computing device.
19. The first electronic computing device of claim 14 , further comprising:
sending the at least part of the first set of files to a third electronic computing device, the third electronic computing device being part of a second distributed source control system;
receiving a third set of one or more files from the third electronic computing device, the third set of one or more files being a second change set for the first set of files;
processing the second change set so that the change set is in a format compatible with the first source control repository; and
when the second change set is in a format compatible with the first source control repository, submitting the second change set to the first source control repository.
20. A tangible computer readable storage medium comprising instructions that, when executed by an electronic computing device, cause the electronic computing device to:
obtain a first set of one or more files from a first source control repository, the first source control repository being a source control repository in a centralized source control system;
store the first set of files on a first electronic computing device;
periodically obtain updates from the first source control repository for one or more files of the first set of files and store the updates on the electronic computing device;
receive a request for the first set of files from a second electronic computing device, the second electronic computing device being an electronic computing device in a first distributed source control system;
as a result of the request, send the first set of files to the second electronic computing device;
receive a second set of one or more files from the second electronic computing device, the second set of one or more files being a first change set for the first set of files, the first change set including a manifest that summarizes changes included in the first change set, the first change set including additions and deletions to the first set of files, the first change set including versioning information, the first change set including one or more source code branches not included in the first set of files, at least one of the source code branches being a feature branch, the feature branch comprising one or more software features or one or more software bug fixes;
process the first change set so that the first change set is in a format compatible with the first source control repository, the change set being processed in a change set check-in module stored on the first electronic computing device;
when the first change set is in a format compatible with the first source control repository, submit the first change set to the first source control repository;
send the first set of files to a third electronic computing device, the third electronic computing device being part of a second distributed source control system;
receive a third set of one or more files from the third electronic computing device, the third set of one or more files being a second change set for the first set of files, the second change set including additions and deletions to the first set of files, the second change set including versioning information, the second change set including one or more source code branches not included in the first set of files, at least one of the source code branches being a feature branch, the feature branch comprising one or more software features or one or more software bug fixes;
process the second change set so that the second change set is in a format compatible with the first source control repository; and
when the second change set is in a format compatible with the first source control repository, submitting the second change set to the first source control repository.
Priority Applications (6)
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 |
CN201210544598.1A CN103019718B (en) | 2011-12-16 | 2012-12-14 | Distributed source is used to control in centralized source controls environment |
PCT/US2012/069970 WO2013090870A1 (en) | 2011-12-16 | 2012-12-15 | Using distributed source control in a centralized source control environment |
EP12857700.4A EP2791788B1 (en) | 2011-12-16 | 2012-12-15 | Using distributed source control in a centralized source control environment |
HK13108918.7A HK1181865A1 (en) | 2011-12-16 | 2013-07-30 | Using distributed source control in a centralized source control environment |
US14/737,122 US10025793B2 (en) | 2011-12-16 | 2015-06-11 | Using distributed source control in a centralized source control environment |
Applications Claiming Priority (1)
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 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/737,122 Continuation US10025793B2 (en) | 2011-12-16 | 2015-06-11 | Using distributed source control in a centralized source control environment |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130159365A1 true US20130159365A1 (en) | 2013-06-20 |
Family
ID=47968356
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/328,272 Abandoned US20130159365A1 (en) | 2011-12-16 | 2011-12-16 | Using Distributed Source Control in a Centralized Source Control Environment |
US14/737,122 Active 2032-04-05 US10025793B2 (en) | 2011-12-16 | 2015-06-11 | Using distributed source control in a centralized source control environment |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/737,122 Active 2032-04-05 US10025793B2 (en) | 2011-12-16 | 2015-06-11 | Using distributed source control in a centralized source control environment |
Country Status (5)
Country | Link |
---|---|
US (2) | US20130159365A1 (en) |
EP (1) | EP2791788B1 (en) |
CN (1) | CN103019718B (en) |
HK (1) | HK1181865A1 (en) |
WO (1) | WO2013090870A1 (en) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430229B1 (en) * | 2013-03-15 | 2016-08-30 | Atlassian Pty Ltd | Merge previewing in a version control system |
US9448791B1 (en) * | 2013-11-06 | 2016-09-20 | Amazon Technologies, Inc. | Synchronizing source code objects and software development workflow objects |
US20170262260A1 (en) * | 2016-03-09 | 2017-09-14 | Bank Of America Corporation | SVN Interface System for Heterogeneous Development Environments |
US10025793B2 (en) | 2011-12-16 | 2018-07-17 | Microsoft Technology Licensing, Llc | Using distributed source control in a centralized source control environment |
US10162626B2 (en) | 2017-04-10 | 2018-12-25 | Microsoft Technology Licensing, Llc | Ordered cache tiering for program build files |
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 |
CN110555317A (en) * | 2019-09-09 | 2019-12-10 | 山东浪潮通软信息科技有限公司 | Application file change processing method, device and system |
US20220027383A1 (en) * | 2018-02-28 | 2022-01-27 | Chaossearch, Inc. | Data normalization using data edge platform |
CN114661339A (en) * | 2022-05-26 | 2022-06-24 | 浙江所托瑞安科技集团有限公司 | Method and device for automatically submitting local data to remote server |
US11385940B2 (en) | 2018-10-26 | 2022-07-12 | EMC IP Holding Company LLC | Multi-cloud framework for microservice-based applications |
US11533317B2 (en) * | 2019-09-30 | 2022-12-20 | EMC IP Holding Company LLC | Serverless application center for multi-cloud deployment of serverless applications |
CN115629746A (en) * | 2022-12-22 | 2023-01-20 | 西安葡萄城软件有限公司 | Method and system for multi-person collaborative development of low-code platform |
US11720347B1 (en) * | 2019-06-12 | 2023-08-08 | Express Scripts Strategic Development, Inc. | Systems and methods for providing stable deployments to mainframe environments |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6288596B2 (en) * | 2014-11-05 | 2018-03-07 | 華為技術有限公司Huawei Technologies Co.,Ltd. | Data processing method and apparatus |
US10146873B2 (en) * | 2015-06-29 | 2018-12-04 | Microsoft Technology Licensing, Llc | Cloud-native documents integrated with legacy tools |
CN105893026A (en) * | 2016-03-28 | 2016-08-24 | 乐视控股(北京)有限公司 | Software version management system and method |
US10754761B2 (en) * | 2016-11-11 | 2020-08-25 | Atlassian Pty Ltd | Systems and methods for testing source code |
CN106886420B (en) * | 2017-03-30 | 2020-10-09 | 广州柔视智能科技有限公司 | Program code management device and method and program code manager |
US10795670B2 (en) * | 2018-12-20 | 2020-10-06 | Roblox Corporation | Developer collaboration control system |
Family Cites Families (17)
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 |
US20020078205A1 (en) * | 2000-11-17 | 2002-06-20 | Lloyd Nolan | Resource control facility |
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 (en) * | 2006-02-10 | 2011-06-13 | 조완희 | Effective P2P system using web folder |
US7805420B2 (en) * | 2006-11-20 | 2010-09-28 | Microsoft Corporation | Versioning and concurrency control for multiple client access of data |
CN101661388A (en) * | 2008-08-29 | 2010-03-03 | 国际商业机器公司 | Version management system, version management method, synchronous control equipment and synchronous control method |
US20100131940A1 (en) | 2008-11-26 | 2010-05-27 | Microsoft Corporation | Cloud based source code version control |
CN101753609B (en) * | 2008-12-15 | 2012-09-19 | 中国移动通信集团公司 | Distributed system version control method, node and system |
CN101572724A (en) * | 2009-03-05 | 2009-11-04 | 国电南瑞科技股份有限公司 | Software version management system |
US20130159365A1 (en) | 2011-12-16 | 2013-06-20 | Microsoft Corporation | Using Distributed Source Control in a Centralized Source Control Environment |
-
2011
- 2011-12-16 US US13/328,272 patent/US20130159365A1/en not_active Abandoned
-
2012
- 2012-12-14 CN CN201210544598.1A patent/CN103019718B/en active Active
- 2012-12-15 EP EP12857700.4A patent/EP2791788B1/en active Active
- 2012-12-15 WO PCT/US2012/069970 patent/WO2013090870A1/en active Application Filing
-
2013
- 2013-07-30 HK HK13108918.7A patent/HK1181865A1/en unknown
-
2015
- 2015-06-11 US US14/737,122 patent/US10025793B2/en active Active
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10025793B2 (en) | 2011-12-16 | 2018-07-17 | Microsoft Technology Licensing, Llc | 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 |
US10915316B1 (en) | 2013-03-15 | 2021-02-09 | Atlassian Pty Ltd. | Correcting comment drift in merges in a version control system |
US9430229B1 (en) * | 2013-03-15 | 2016-08-30 | Atlassian Pty Ltd | Merge previewing in a version control system |
US10289407B1 (en) | 2013-03-15 | 2019-05-14 | Atlassian Pty Ltd | Correcting comment drift in merges in a version control system |
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 |
US20170262260A1 (en) * | 2016-03-09 | 2017-09-14 | Bank Of America Corporation | SVN Interface System for Heterogeneous Development Environments |
US10162626B2 (en) | 2017-04-10 | 2018-12-25 | Microsoft Technology Licensing, Llc | Ordered cache tiering for program build files |
US20220027383A1 (en) * | 2018-02-28 | 2022-01-27 | Chaossearch, Inc. | Data normalization using data edge platform |
US11762876B2 (en) * | 2018-02-28 | 2023-09-19 | 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 |
US12073212B2 (en) | 2019-06-12 | 2024-08-27 | Express Scripts Strategic Development, Inc. | Systems and methods for providing stable deployments to mainframe environments |
CN110555317A (en) * | 2019-09-09 | 2019-12-10 | 山东浪潮通软信息科技有限公司 | Application file change processing method, device and system |
US11533317B2 (en) * | 2019-09-30 | 2022-12-20 | EMC IP Holding Company LLC | Serverless application center for multi-cloud deployment of serverless applications |
CN114661339A (en) * | 2022-05-26 | 2022-06-24 | 浙江所托瑞安科技集团有限公司 | Method and device for automatically submitting local data to remote server |
CN115629746A (en) * | 2022-12-22 | 2023-01-20 | 西安葡萄城软件有限公司 | Method and system for multi-person collaborative development of low-code platform |
Also Published As
Publication number | Publication date |
---|---|
EP2791788A1 (en) | 2014-10-22 |
HK1181865A1 (en) | 2013-11-15 |
CN103019718A (en) | 2013-04-03 |
US20160004719A1 (en) | 2016-01-07 |
EP2791788B1 (en) | 2019-07-31 |
US10025793B2 (en) | 2018-07-17 |
EP2791788A4 (en) | 2015-08-05 |
CN103019718B (en) | 2016-07-06 |
WO2013090870A1 (en) | 2013-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10025793B2 (en) | Using distributed source control in a centralized source control environment | |
US11561956B2 (en) | Key pattern management in multi-tenancy database systems | |
US10452646B2 (en) | Deploying changes in a multi-tenancy database system | |
KR102023215B1 (en) | Automatic relationship detection for reporting on spreadsheet data | |
US10360277B2 (en) | Controlling data migration | |
CN110809756B (en) | Code review reset discrepancies | |
US8433687B1 (en) | Off-line indexing for client-based software development tools | |
US20180060065A1 (en) | Advanced packaging techniques for improving work flows | |
US20190197130A1 (en) | Ensuring consistency in distributed incremental content publishing | |
US11321226B2 (en) | Joint validation across code repositories | |
EP2610762A1 (en) | Database version management system | |
US11675690B2 (en) | Lineage-driven source code generation for building, testing, deploying, and maintaining data marts and data pipelines | |
US11922146B2 (en) | Systems and method for creating enterprise software | |
US10747643B2 (en) | System for debugging a client synchronization service | |
CN114528008A (en) | Code control method, device and medium based on distributed version control system | |
CN107016047A (en) | Document query, document storing method and device | |
US20110276821A1 (en) | Method and system for migrating data from multiple sources | |
US20080059941A1 (en) | Method and system for supporting a collaborative development environment | |
US20230259506A1 (en) | Annotating datasets without redundant copying | |
US20180121293A1 (en) | Code base synchronization between source control systems | |
US20230185549A1 (en) | Automatic Workflow Generation | |
US20100161682A1 (en) | Metadata model repository | |
US11099837B2 (en) | Providing build avoidance without requiring local source code | |
US20160085544A1 (en) | Data management system | |
US20180150294A1 (en) | Backout tool for source control systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BOCTOR, VICTOR;BUCHER, THEODORE ALBERT;REEL/FRAME:027397/0880 Effective date: 20111214 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034544/0541 Effective date: 20141014 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |