An application may be developed by multiple users working from multiple locations. The multiple users may utilize a particular revision management application to support parallel application development.
The following detailed description of example implementations refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements.
A set of users may use a revision management application utilizing a particular revision-control architecture, such as a stream architecture, a branch architecture, or the like, to manage parallel application development. A set of document revisions may be associated with a format that is readable by the revision management application. However, a complex application development team may include multiple sets of users, trained on multiple different revision management applications. Implementations described herein may facilitate synchronization of a set of document revisions between different revision management applications utilizing different revision-control architectures.
The synchronization device may receive the request, and may retrieve the first set of document revisions associated with the first format (e.g., the branch revisions) from the first server device. The synchronization device may determine synchronization configuration information associated with synchronizing the first set of document revisions with the second set of document revisions, such as a quantity of files to synchronize, a set of file extensions to exclude from synchronization, or the like. The synchronization device may access the second set of document revisions associated with the second format (e.g., the stream revisions), and may compare the first set of document revisions with the second set of document revisions. The synchronization device may synchronize the first set of document revisions with the second set of document revisions by selectively modifying files associated with the first set of document revisions and the second set of document revisions (e.g., files stored by the second server device).
The synchronization device may provide information to the client device confirming that synchronization has occurred, and the client device may display a confirmation notification to be viewed by the user. The user may continue revision of the synchronized document revisions utilizing the second revision management application (e.g., via the second server device). In this way, a set of document revisions associated with a first format may be synchronized with a set of document revisions associated with a second format for use by a user of a revision management application associated with the second format.
A revision management application may refer to an application that facilitates version control, such as for a text document, a program code file, a web site, or the like. A revision management application may maintain an association between multiple versions via a particular architecture, such as a branch architecture, a stream architecture, or the like. A document revision may refer to information associated with a version of a set of files, such as information identifying a change (e.g., from another version of the set of files), information associated with reverting the change, a revision identifier, a revision number, or the like.
While systems and methods are described herein in terms of a first set of document revisions associated with a branch architecture being synchronized with a second set of document revisions associated with a stream architecture, the systems and methods may also be described in terms of another first set of document revisions associated with the stream architecture being synchronized to another second set of document revisions associated with the branch architecture. For example, the first server device may be associated with a first application utilizing a stream architecture and the second server device may be associated with a second application utilizing a branch architecture.
Client device 210 may include a device capable of receiving, generating, storing, processing, and/or providing a set of document revisions and/or information associated with the set of document revisions. For example, client device 210 may include a computing device, such as a desktop computer, a laptop computer, a tablet computer, a handheld computer, a server, a mobile phone (e.g., a smart phone, a radiotelephone, etc.), or a similar device. In some implementations, client device 210 may be associated with a particular server device 220. For example, client device 210-1 may be associated with server device 220-1 (e.g., that provides a first revision management application), and client device 210-2 may be associated with server device 220-2 (e.g., that provides a second revision management application). Client device 210 may communicate with synchronization device 230 to perform one or more processes associated with synchronization.
Server device 220 may include one or more devices capable of receiving, generating, storing, processing, and/or providing a set of document revisions and/or information associated with the set of document revisions. For example, server device 220 may include a computing device, such as a server, a desktop computer, a laptop computer, a tablet computer, a handheld computer, or a similar device. In some implementations, server device 220 may be associated with a set of client devices 210, and may provide a particular revision management application, such as AccuRev, IBM ClearCase Rational, or the like, to the set of client devices 210.
Synchronization device 230 may include one or more devices capable of receiving, generating, storing, processing, and/or providing information associated with synchronizing a first set of document revisions with a second set of document revisions. For example, synchronization device 230 may include a computing device, such as a server, a desktop computer, a laptop computer, a tablet computer, a handheld computer, or a similar device. In some implementations, synchronization device 230 may be capable of accessing a set of document revisions associated with server device 220-1, and/or modifying the set of document revisions associated with server device 220-2.
The number of devices shown in
Bus 310 may include a path that permits communication among the components of device 300. Processor 320 may include a processor (e.g., a central processing unit, a graphics processing unit, an accelerated processing unit), a microprocessor, and/or any processing component (e.g., a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), etc.) that interprets and/or executes instructions. Memory 330 may include a random access memory (RAM), a read only memory (ROM), and/or another type of dynamic or static storage device (e.g., a flash, magnetic, or optical memory) that stores information and/or instructions for use by processor 320.
Input component 340 may include a component that permits a user to input information to device 300 (e.g., a touch screen display, a keyboard, a keypad, a mouse, a button, a switch, etc.). Output component 350 may include a component that outputs information from device 300 (e.g., a display, a speaker, one or more light-emitting diodes (LEDs), etc.).
Communication interface 360 may include a transceiver-like component, such as a transceiver and/or a separate receiver and transmitter, that enables device 300 to communicate with other devices, such as via a wired connection, a wireless connection, or a combination of wired and wireless connections. For example, communication interface 360 may include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (RF) interface, a universal serial bus (USB) interface, a Wi-Fi interface, a cellular network interface, or the like.
Device 300 may perform one or more processes described herein. Device 300 may perform these processes in response to processor 320 executing software instructions included in a computer-readable medium, such as memory 330. A computer-readable medium is defined as a non-transitory memory device. A memory device includes memory space within a single physical storage device or memory space spread across multiple physical storage devices.
Software instructions may be read into memory 330 from another computer-readable medium or from another device via communication interface 360. When executed, software instructions stored in memory 330 may cause processor 320 to perform one or more processes described herein. Additionally, or alternatively, hardwired circuitry may be used in place of or in combination with software instructions to perform one or more processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.
The number of components shown in
As shown in
Synchronization may refer to merging information associated with the first set of document revisions into the second set of document revisions. For example, when a first user revises first program code using a first revision management application associated with first server device 220 (e.g., utilizing a first architecture), a second user may request that the revised first program code be merged into second program code that is being revised by the second user via a second revision management application associated with second server device 220 (e.g., utilizing a second architecture).
Synchronization device 230 may determine the first set of document revisions and/or the second set of document revisions based on receiving the request, in some implementations. A set of document revisions may refer to information generated in a particular format readable by a revision management application that maintains an association between one or more versions of a file via a particular architecture. For example, the revision management application may associate one or more versions of program code using a branch architecture, a stream architecture, or the like.
In some implementations, synchronization device 230 may select a particular set of document revisions as the first set of document revisions based on information provided in the request. For example, when the first revision management application utilizes a stream architecture, synchronization device 230 may receive information associated with identifying a set of document revisions corresponding to a production stream (e.g., a particular repository that is associated with a particular set of document revisions), a subset of a production stream (e.g., a particular directory, a particular file, etc.), or the like. Additionally, or alternatively, when the first revision management application utilizes a branch architecture, synchronization device 230 may receive information associated with identifying a set of document revisions corresponding to a production branch (e.g., another particular repository that is associated with another particular set of document revisions).
In some implementations, synchronization device 230 may log into the first revision management application and/or the second revision management application. For example, the request may include authorization information for synchronization device 230 to log into the first revision management application and/or the second revision management application. In this case, synchronization device 230 may request a particular set of document revisions based on having logged into the first revision management application and/or the second revision management application.
In some implementations, synchronization device 230 may determine a repository (e.g., a workspace) for synchronizing document revisions based on receiving the request. For example, when the second revision management application includes a development stream (e.g., a particular stream that is associated with the second set of document revisions), synchronization device 230 may generate a workspace for merging document revisions from a production branch (e.g., a particular branch that is associated with the first set of document revisions). Additionally, or alternatively, synchronization device 230 may identify a previously used workspace with which to merge document revisions.
In some implementations, when the second revision management application includes a development branch (e.g., that is associated with the second set of document revisions), synchronization device 230 may create a temporary branch for merging document revisions from a production stream (e.g., that is associated with the first set of document revisions). In this case, synchronization device 230 may merge changes from the temporary branch into the development branch.
As further shown in
Synchronization device 230 may identify one or more files for synchronization associated with the first set of document revisions based on the synchronization configuration information, in some implementations. For example, synchronization device 230 may determine that the synchronization configuration indicates that the entire set of files is to be synchronized. Additionally or alternatively, synchronization device 230 may determine that synchronization is to occur for one or more files based on a synchronization date, a revision date, or the like. Additionally, or alternatively, synchronization device 230 may determine that synchronization is to occur for a particular file being viewed via client device 210. For example, client device 210 may provide information (e.g., included in the request), identifying a file being viewed by a user, and synchronization device 230 may determine to synchronize a corresponding file stored via first server device 220. Additionally, or alternatively, synchronization device 230 may determine that synchronization is to occur for a particular quantity of files, for a particular quantity of time, for a particular quantity of data, or the like. In some implementations, synchronization device 230 may determine to synchronize a first quantity of files (e.g., program code files), and may test the first quantity of files prior to synchronizing a second quantity of files.
Synchronization device 230 may determine one or more files associated with the first set of document revisions that are to be filtered out of synchronization based on the synchronization configuration information, in some implementations. For example, the synchronization configuration information may indicate that a file associated with a particular file type (e.g., an image, a compressed set of files, etc.), a particular file extension, or the like is to be avoided during synchronization. Additionally, or alternatively, synchronization device 230 may determine that a file satisfying a threshold size is to be avoided during synchronization based on the synchronization configuration information.
Synchronization device 230 may determine whether to utilize user input in resolving a synchronization conflict (e.g., a detected difference between the first set of document revisions and the second set of document revisions), in some implementations. For example, synchronization device 230 may determine to synchronize the first set of document revisions with the second set of document revisions without further user input. Additionally, or alternatively, synchronization device 230 may provide information identifying a conflict for user selection (e.g., via client device 210) when comparing the first set of revisions and the second set of revisions.
As further shown in
Synchronization device 230 may identify a process, such as a directory process, a file process, or the like, when comparing the first set of document revisions with the second set of document revisions, in some implementations. For example, synchronization device 230 may compare a particular process of the first set of document revisions with the second set of document revisions, and may determine that a corresponding process does not exist for the second set of document revisions. In this case, synchronization device 230 may selectively modify the files associated with the second set of document revisions by generating a corresponding process for the second set of document revisions.
In some implementations, synchronization device 230 may check out a directory (e.g., a subdirectory, a parent directory, a folder, etc.), a file, or the like associated with the corresponding process for the second set of document revisions when generating the corresponding process. Checking out may refer to instructing second server device 220 (e.g., associated with the second set of document revisions) to deny access (e.g., modification) to particular information (e.g., a directory, a process, a file, etc.), until the particular information is checked in. For example, when synchronization device 230 is synchronizing a first set of document revisions associated with a stream architecture with a second set of document revisions associated with a branch architecture, synchronization device 230 may provide information to server device 220 indicating that server device 220 is to deny access to a parent directory for a newly created process, when synchronization device 230 is modifying the newly created process.
Additionally, or alternatively, synchronization device 230 may indicate that a change is to be promoted when generating the corresponding process for the second set of document revisions. Promoting a change may refer to copying and/or merging information (e.g., a directory, a process, a file, a document, etc.) from a first repository (e.g., a temporary workspace) to a second repository (e.g., a development stream, a testing stream, a production stream, etc.). For example, when synchronization device 230 is synchronizing a first set of document revisions associated with a branch architecture with a second set of document revisions associated with a stream architecture, synchronization device 230 may indicate that server device 220 is to promote a new process from a temporary workspace to a development stream associated with the second set of document revisions.
In some implementations, synchronization device 230 may identify and/or create one or more new processes recursively. For example, when processing a set of files with a parent directory that includes a particular file structure, synchronization device 230 may recursively traverse the file structure to identify conflicts between the first set of document revisions and the second set of document revisions.
Synchronization device 230 may identify first particular information, such as a process, a file, a directory, or the like for the first set of document revisions corresponding to second particular information for the second set of document revisions when comparing the first set of document revisions with the second set of document revisions. In this case, synchronization device 230 may perform a comparison (e.g., a binary comparison, or the like) of the first particular information with the corresponding second particular information to determine one or more conflicts, such as different program code, different functions, different text, different data, or the like. In some implementations, synchronization device 230 may selectively modify the second set of document revisions based on the first particular information based on the one or more conflicts between the first particular information and the second particular information. For example, synchronization device 230 may replace program code associated with the second set of document revisions with program code associated with the first set of document revisions.
In some implementations, synchronization device 230 may check out a parent directory associated with the second particular information when selectively modifying the second set of document revisions. For example, when synchronization device 230 is synchronizing a first set of document revisions associated with a stream architecture with a second set of document revisions associated with a branch architecture, synchronization device 230 may provide information to server device 220 indicating that server device 220 is to deny access to a parent directory for the second particular information.
Additionally, or alternatively, synchronization device 230 may copy the first particular information to the second set of document revisions, and may promote the first particular information, when selectively modifying the second set of document revisions. For example, when synchronization device 230 is synchronizing a first set of document revisions associated with a branch architecture with a second set of document revisions associated with a stream architecture, synchronization device 230 may copy the first particular information to a temporary workspace associated with the second set of document revisions. In this case, synchronization device 230 may indicate that the second revision management application is to promote the copied first particular information from the temporary workspace to a development stream associated with the second set of document revisions.
As further shown in
Synchronization device 230 may check in one or more files, directories, etc. when providing information associated with the synchronization to server device 220, in some implementations. For example, when synchronization device 230 is synchronizing a first set of document revisions associated with a stream architecture with a second set of document revisions associated with a branch architecture, synchronization device 230 may check in one or more directories that had been checked out when modifying information associated with the one or more directories. In some implementations, synchronization device 230 may check in multiple directories at one time. Additionally, or alternatively, synchronization device 230 may check in a particular directory when synchronization device 230 determines that modification to the particular directory has completed.
Synchronization device 230 may provide information associated with promoting one or more changes (e.g., to a file, a process, a directory, etc.) when providing information associated with synchronization to server device 220, in some implementations. For example, when synchronization device 230 is synchronizing a first set of document revisions associated with a branch architecture with a second set of document revisions associated with a stream architecture, synchronization device 230 may promote the one or more changes from a temporary workspace to a development stream (e.g., a stream associated with further revision of the file, the process, the directory, etc.).
Synchronization device 230 may update a synchronization date identifier when providing information associated with synchronization to server device 220, in some implementations. For example, synchronization device 230 may provide information to first server device 220 associated with the first set of document revisions and/or second server device 220 associated with the second set of document revisions indicating one or more files, documents, directories, processes, or the like that have been synchronized.
Synchronization device 230 may provide confirmation of synchronization to client device 210 when providing information associated with the synchronization, in some implementations. For example, synchronization device 230 may provide information identifying first document revisions that have been synchronized with the second document revisions. In some implementations, synchronization device 230 may provide information associated with facilitating user resolution of a conflict to be synchronized from the first set of document revisions. For example, synchronization device 230 may provide a set of conflicts, and may receive user input associated with resolving the set of conflicts.
In this way, a first set of document revisions associated with a first format readable by a first revision management application utilizing a first revision-control architecture may be synchronized with a second set of document revisions associated with a second format readable by a second revision management application utilizing a second revision-control architecture.
Although
As shown in
As shown in
As shown in
As shown in
As shown in
As shown in
As shown in
As shown in
As shown in
As indicated above,
As shown in
As shown in
As shown in
As shown in
As shown in
As indicated above,
Implementations described herein may assist a synchronization device in synchronizing a first set of document revisions performed on a first server device utilizing a first revision management application associated with a first revision-control architecture with a second set of document revisions performed on a second server device utilizing a second revision management application associated with a second revision-control architecture.
The foregoing disclosure provides illustration and description, but is not intended to be exhaustive or to limit the implementations to the precise form disclosed. Modifications and variations are possible in light of the above disclosure or may be acquired from practice of the implementations.
As used herein, the term component is intended to be broadly construed as hardware, firmware, or a combination of hardware and software.
Some implementations are described herein in conjunction with thresholds. As used herein, satisfying a threshold may refer to a value being greater than the threshold, more than the threshold, higher than the threshold, greater than or equal to the threshold, less than the threshold, fewer than the threshold, lower than the threshold, less than or equal to the threshold, equal to the threshold, etc.
It will be apparent that systems and/or methods, as described herein, may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement these systems and/or methods is not limiting of the implementations. Thus, the operation and behavior of the systems and/or methods were described without reference to the specific software code—it being understood that software and hardware can be designed to implement the systems and/or methods based on the description herein.
Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of possible implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one claim, the disclosure of possible implementations includes each dependent claim in combination with every other claim in the claim set.
No element, act, or instruction used herein should be construed as critical or essential unless explicitly described as such. Also, as used herein, the articles “a” and “an” are intended to include one or more items, and may be used interchangeably with “one or more.” Where only one item is intended, the term “one” or similar language is used. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.
| Number | Name | Date | Kind |
|---|---|---|---|
| 4875159 | Cary | Oct 1989 | A |
| 4912637 | Sheedy | Mar 1990 | A |
| 5574898 | Leblang | Nov 1996 | A |
| 5600834 | Howard | Feb 1997 | A |
| 5649200 | Leblang | Jul 1997 | A |
| 5806078 | Hug | Sep 1998 | A |
| 5884323 | Hawkins | Mar 1999 | A |
| 5893116 | Simmonds | Apr 1999 | A |
| 5978791 | Farber | Nov 1999 | A |
| 6202085 | Benson | Mar 2001 | B1 |
| 6233589 | Balcha | May 2001 | B1 |
| 6385768 | Ziebell | May 2002 | B1 |
| 6393437 | Zinda | May 2002 | B1 |
| 6457170 | Boehm | Sep 2002 | B1 |
| 6721713 | Guheen | Apr 2004 | B1 |
| 6757893 | Haikin | Jun 2004 | B1 |
| 6928644 | Kroening | Aug 2005 | B1 |
| 6976093 | Lara | Dec 2005 | B2 |
| 7389309 | Edelstein | Jun 2008 | B2 |
| 7395281 | Edwards | Jul 2008 | B2 |
| 7555196 | Crawford | Jun 2009 | B1 |
| 7702747 | Liu | Apr 2010 | B1 |
| 7778962 | Shah | Aug 2010 | B2 |
| 8180739 | Arditi | May 2012 | B2 |
| 8229579 | Eldridge | Jul 2012 | B2 |
| 8417673 | Stakutis | Apr 2013 | B2 |
| 8880464 | Haeske | Nov 2014 | B1 |
| 9077733 | Kazan | Jul 2015 | B2 |
| 9158785 | Rudkowski | Oct 2015 | B1 |
| 20010042073 | Saether | Nov 2001 | A1 |
| 20020038314 | Thompson | Mar 2002 | A1 |
| 20020091697 | Huang | Jul 2002 | A1 |
| 20020184252 | Holtz | Dec 2002 | A1 |
| 20020188667 | Kirnos | Dec 2002 | A1 |
| 20030204531 | Kuzmin | Oct 2003 | A1 |
| 20040015963 | Huber | Jan 2004 | A1 |
| 20040068713 | Yannakoyorgos | Apr 2004 | A1 |
| 20040133544 | Kiessig | Jul 2004 | A1 |
| 20040172425 | Edelstein | Sep 2004 | A1 |
| 20050039116 | Slack-Smith | Feb 2005 | A1 |
| 20050138216 | Giles | Jun 2005 | A1 |
| 20050203969 | Kawabe | Sep 2005 | A1 |
| 20050226597 | Cobb | Oct 2005 | A1 |
| 20050261787 | Plante | Nov 2005 | A1 |
| 20050262430 | Croft | Nov 2005 | A1 |
| 20060179083 | Kulkarni | Aug 2006 | A1 |
| 20060242197 | Tsyganskiy | Oct 2006 | A1 |
| 20070027936 | Stakutis | Feb 2007 | A1 |
| 20070220497 | Chudukatil | Sep 2007 | A1 |
| 20070266165 | Li | Nov 2007 | A1 |
| 20070276836 | Chatterjee | Nov 2007 | A1 |
| 20070283011 | Rakowski | Dec 2007 | A1 |
| 20080005195 | Li | Jan 2008 | A1 |
| 20080046484 | Ellis | Feb 2008 | A1 |
| 20080077634 | Quakenbush | Mar 2008 | A1 |
| 20080133616 | Willoughby | Jun 2008 | A1 |
| 20080168072 | Freedman | Jul 2008 | A1 |
| 20080222212 | Prasad | Sep 2008 | A1 |
| 20080228671 | Nagaraj | Sep 2008 | A1 |
| 20090083101 | Wall | Mar 2009 | A1 |
| 20090083165 | Wall | Mar 2009 | A1 |
| 20090083210 | Clark | Mar 2009 | A1 |
| 20090083308 | Wall | Mar 2009 | A1 |
| 20090083343 | Wall | Mar 2009 | A1 |
| 20090276698 | Clarke | Nov 2009 | A1 |
| 20090300580 | Heyhoe | Dec 2009 | A1 |
| 20090313331 | Rasmussen | Dec 2009 | A1 |
| 20100115254 | Deng | May 2010 | A1 |
| 20110055155 | Page | Mar 2011 | A1 |
| 20110093434 | Arora | Apr 2011 | A1 |
| 20110113011 | Prorock | May 2011 | A1 |
| 20110145363 | Ananthanarayanan | Jun 2011 | A1 |
| 20110197121 | Kletter | Aug 2011 | A1 |
| 20110218964 | Hagan | Sep 2011 | A1 |
| 20110307862 | Abrams | Dec 2011 | A1 |
| 20120023476 | Bugayenko | Jan 2012 | A1 |
| 20120185434 | Giampaolo | Jul 2012 | A1 |
| 20120226933 | Baptist | Sep 2012 | A1 |
| 20120254108 | Wedewer | Oct 2012 | A1 |
| 20120297363 | Perisic | Nov 2012 | A1 |
| 20120330887 | Young | Dec 2012 | A1 |
| 20130036400 | Bak | Feb 2013 | A1 |
| 20130073063 | Kiffmeier | Mar 2013 | A1 |
| 20130085992 | Prasad | Apr 2013 | A1 |
| 20130151468 | Wu | Jun 2013 | A1 |
| 20130185252 | Palmucci | Jul 2013 | A1 |
| 20130185346 | Lee | Jul 2013 | A1 |
| 20130325807 | Sokolov | Dec 2013 | A1 |
| 20140095456 | Pidduck | Apr 2014 | A1 |
| 20140095710 | Kazan | Apr 2014 | A1 |
| 20140201144 | Vibhor | Jul 2014 | A1 |
| 20140222758 | March | Aug 2014 | A1 |
| 20140281872 | Glover | Sep 2014 | A1 |
| 20140282353 | Jubran | Sep 2014 | A1 |
| 20140379851 | LeCroy | Dec 2014 | A1 |
| 20150019486 | Gaikwad | Jan 2015 | A1 |
| 20150106790 | Bigwood | Apr 2015 | A1 |
| 20150120663 | Le Scouarnec | Apr 2015 | A1 |
| 20150120685 | Burckart | Apr 2015 | A1 |
| 20150134614 | Sachs | May 2015 | A1 |
| 20150142740 | Behuria | May 2015 | A1 |
| 20150169614 | Murali-Venkataraman | Jun 2015 | A1 |
| Entry |
|---|
| Rochkind, Marc J., “The Source Code Control System”, IEEE Transactions on Software Engineering, vol. 1, No. 4, Dec. 1975, pp. 364-370. |
| Takata et al., “GRAM—A P2P System of Group Revision Assistance Management”, In Proceedings of the 18th International Conference on Advanced Information Networking and Application (AINA '04), IEEE, 6 pages, 2004. |
| Tichy, Walter F., “RCS—A system for Version Control”, Software—Practice & Experience, vol. 15, No. 7, Jul. 1985, pp. 637-654. |
| Yip et al., “Pastwatch: A Distributed Version Control System”, NSDI '06: 3rd Symposium on Networked Systems Design & Implementation, USENIX Association, pp. 381-394, 2006. |
| SOA News Desk, “AccuRev Unveils SCM Coexistence Solution for ClearCase”, http://soa.sys-con.com/node/510236, Mar. 3, 2008, 5 pages. |
| Number | Date | Country | |
|---|---|---|---|
| 20150169614 A1 | Jun 2015 | US |