US20170269909A1 - Comparison graph - Google Patents

Comparison graph Download PDF

Info

Publication number
US20170269909A1
US20170269909A1 US15/382,346 US201615382346A US2017269909A1 US 20170269909 A1 US20170269909 A1 US 20170269909A1 US 201615382346 A US201615382346 A US 201615382346A US 2017269909 A1 US2017269909 A1 US 2017269909A1
Authority
US
United States
Prior art keywords
code branch
commit
branch
code
commits
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
Application number
US15/382,346
Inventor
Stephen Smith
Danny Greg
Karl Tobias Ahlin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
GitHub Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GitHub Inc filed Critical GitHub Inc
Priority to US15/382,346 priority Critical patent/US20170269909A1/en
Publication of US20170269909A1 publication Critical patent/US20170269909A1/en
Assigned to GITHUB, INC. reassignment GITHUB, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AHLIN, KARL TOBIAS, GREG, DANNY, SMITH, STEPHEN
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GITHUB, INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Definitions

  • a software development organization typically utilizes a version control system for maintaining its code through the process of development.
  • a version control system tracks changes made to the code and allows changes to be undone if necessary.
  • a version control system additionally allows a developer to check out a branch of the code for development without affecting the master code branch, and then to merge the checked out branch of the code back into the master code branch when changes to the checked out branch have been completed.
  • Some software development organizations include a large number of developers, each working on their own checked out branch. It can be difficult for a developer to keep track of the changes happening to the main code repository while working on a checked out branch.
  • FIG. 1 is a block diagram illustrating an embodiment of a system for comparing code branches.
  • FIG. 2 is a block diagram illustrating an embodiment of a version control server system.
  • FIG. 3 is a block diagram illustrating an embodiment of a developer system.
  • FIG. 4 is a block diagram illustrating an embodiment of a comparison graph system.
  • FIG. 5 is a flow diagram illustrating an embodiment of a process for comparing code branches.
  • FIG. 6A is a flow diagram illustrating an embodiment of a process for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits in the second code branch that are not common to the first code branch.
  • FIG. 6B is a flow diagram illustrating an embodiment of a process for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits in the second code branch that are not common to the first code branch.
  • FIG. 7 is a flow diagram illustrating an embodiment of a process for determining a display of a first set of commits and a second set of commits.
  • FIG. 8 is a flow diagram illustrating an embodiment of a process for determining a location for a commit.
  • FIG. 9 is a diagram illustrating an embodiment of a comparison graph.
  • the invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor.
  • these implementations, or any other form that the invention may take, may be referred to as techniques.
  • the order of the steps of disclosed processes may be altered within the scope of the invention.
  • a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task.
  • the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
  • a comparison graph is disclosed.
  • a system for comparing code branches comprises a code branch separator for determining a first set of commits in a first code branch that are not common to a second code branch, and determining a second set of commits in the second code branch that are not common to the first code branch; and a user interface determiner for determining a display of the first set of commits and the second set of commits.
  • a comparison graph comprises a display representing a first set of commits in a first code branch and a second set of commits in a second code branch, wherein the first set of commits are not common to the second code branch and the second set of commits are not common to the first code branch.
  • a version control system used by a software development organization comprises a code repository including many code branches. Some code stored in the code repository comprises a main code branch (e.g., a primary or master code branch verified to function correctly).
  • the software developer checks out a copy of the main code branch. This checked out copy of the main code branch begins identical to the main code branch.
  • the software developer edits the checked out code branch to make the desired changes.
  • Each saved change to the checked out code branch comprises a commit.
  • the checked out code branch is merged into the main code branch, applying the commits to the main code branch.
  • a software development organization can have a large number of software developers, each potentially working on one or more checked out code branches for different projects.
  • a software developer works on a first checked out code branch, it accumulates commits not present in the main code branch.
  • the main code branch accumulates commits not present in the first checked out code branch.
  • a software developer typically needs to be aware of the set of differences between the checked out code branch currently being worked on and the main code branch, in order to prevent or be aware of potential difficulties when merging the checked out code branch into the main code branch.
  • a software developer checks out a code branch from the main code branch (e.g., as a main branch of the project), and further checks out copies of the checked out code branch to work on.
  • a software developer is interested in differences between a main code branch and a checked out version of the main code branch, a checked out version of a main code branch and a checked out copy of that checked out version, a main code branch and checked out copy of a checked out version of the main code branch, two different checked out copies of a main code branch, or any other appropriate pair of code branches.
  • the comparison graph displays a timeline of commits of two code branches, wherein only commits not present in both code branches are shown.
  • the comparison graph displays a first code line comprising a first set of commits, wherein the first set of commits comprises a first set of commits in a first code branch that are not common to a second code branch; and a second code line displaying a second set of commits, wherein the second set of commits comprises a second set of commits in a second code branch that are not common to the first code branch.
  • a symbol is shown on the code branch to indicate a type of commit (e.g., unmerged changes to a master code branch, a synced commit, an unsynced commit, an unsynced remote merge, an unsynced remote commit, etc.).
  • commits are shown using a non-linear time scale (e.g., a first spacing between commits is used for commits closer in time than a first threshold, a second spacing between commits is used for commits closer in time than a second threshold, a third spacing between commits is used for commits closer in time than a third threshold, etc.).
  • the system for comparing code branches comprises a code branch separator for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits that are not common to a first code branch.
  • the version control system provides the code branch separator with a first set of commits comprising all commits in a first code branch and a second set of commits comprising all commits in a second code branch. The code branch separator then determines the sets of commits unique to each branch.
  • the version control system when the system for comparing code branches requests commit data from a version control system, the version control system provides the system for comparing code branches with the sets of commits unique to each branch.
  • the system for comparing code branches additionally comprises a user interface determiner for determining a display of the first set of commits and the second set of commits.
  • the system for comparing code branches is used to compare branches of documents other than code (e.g., written documents, computer-aided design files, image files, audio files, video files, etc.).
  • documents other than code e.g., written documents, computer-aided design files, image files, audio files, video files, etc.
  • FIG. 1 is a block diagram illustrating an embodiment of a system for comparing code branches.
  • the network system of FIG. 1 provides communication between any appropriate number of software developers and a version control server system.
  • FIG. 1 comprises network 100 .
  • network 100 comprises one or more of the following: a local area network, a wide area network, a wired network, a wireless network, the Internet, an intranet, a storage area network, or any other appropriate communication network.
  • developer system 102 and developer system 104 comprise systems for use by a software developer while developing software.
  • developer system 102 and developer system 104 comprise systems for use by any appropriate content developer (e.g., a writer, a video editor, a computer-aided-designer, etc.). In various embodiments, there are 1, 6, 22, 122, 1059, or any other appropriate number of developer systems communicating with network 100 .
  • Version control server system 106 comprises a server system for providing version control. In various embodiments, version control server system 106 comprises maintaining copies of developer files (e.g., code), tracking versions of developer files, checking out and tracking developer copies of developer files, checking in developer files, merging developer files, providing copies of master or developer files, or any other appropriate version control function.
  • developer files e.g., code
  • a project is maintained on version control server system 106 (e.g., the primary project database is stored on version control server system 106 ) and developer copies of project files are stored on a developer system (e.g., developer system 102 and developer system 104 ).
  • a project is maintained on a developer system (e.g., developer system 102 and developer system 104 .
  • version control server system 106 comprises a system for comparing code branches.
  • a developer system e.g., developer system 102 and developer system 104
  • FIG. 2 is a block diagram illustrating an embodiment of a version control server system.
  • version control server system 200 comprises version control server system 106 of FIG. 1 .
  • version control server system comprises user interface system 202 for displaying a user interface.
  • user interface system 202 provides user interface display information.
  • Version control server system 200 additionally comprises version control database 204 .
  • version control database 204 maintains copies of developer files (e.g., code), tracks versions of developer files, checks out and tracks developer copies of developer files, checks in developer copies, merges in developer copies, provides developer copies or master copies, or performs any other appropriate version control function.
  • version control database 204 maintains a master code branch (e.g., a most recently updated and verified for production code branch). In some embodiments, version control database 204 maintains development code branches (e.g., code branches diverging from the master code branch for use in development). In some embodiments, one or more code branches are developed by a developer using a developer system (e.g., developer system 102 of FIG. 1 or developer system 104 of FIG. 1 ). In some embodiments, a developer using a developer system maintains a local copy of code branches stored by version control database 204 . In some embodiments, a developer using a developer system edits a local copy of a code branch stored by version control database 204 .
  • a master code branch e.g., a most recently updated and verified for production code branch
  • version control database 204 maintains development code branches (e.g., code branches diverging from the master code branch for use in development).
  • one or more code branches are developed by a developer using a developer system (e.g.
  • a developer using a developer system synchronizes changes made to a local copy of a code branch with the copy of the code branch stored by version control database 204 . In some embodiments, a developer using a developer system synchronizes changes made to a code branch stored by version control database 204 with a local copy of the code branch. In some embodiments, a developer using a developer system merges changes to a development code branch stored by version control database 204 into a master code branch stored by version control database 204 . Version control server system 200 additionally comprises comparison graph system 206 . In some embodiments, comparison graph system 206 comprises a system for determining and providing a comparison graph. In some embodiments, comparison graph system 206 receives version control database information from version control database 204 .
  • comparison graph system 206 receives developer system information from a developer system. In some embodiments, comparison graph system 206 determines comparison graph display information. In various embodiments, comparison graph system 206 provides comparison graph display information to a display system, to user interface system 202 , to a developer system, or to any other appropriate system.
  • FIG. 3 is a block diagram illustrating an embodiment of a developer system.
  • developer system 300 of FIG. 3 comprises developer system 102 of FIG. 1 or developer system 104 of FIG. 1 .
  • developer system 300 comprises version control client system 302 .
  • version control client system 302 comprises a system for storing developer files, for interacting with a version control server system, for storing checked out copies of developer files from a version control server system, for tracking developer changes, or for performing any other appropriate developer system function.
  • version control client system comprises user interface system 304 for displaying a user interface.
  • user interface system 304 provides user interface display information.
  • Version control server client system 302 additionally comprises local version control database 306 .
  • local version control database 306 maintains copies of developer files, tracks versions of developer files, stores checked out copies of developer files, interacts with a version control server system (e.g., version control server system 106 of FIG. 1 ), or performs any other appropriate version control function.
  • local version control database 306 comprises a local copy of a version control database (e.g., version control database 204 of FIG. 2 ).
  • local version control database 306 comprises a master code branch (e.g., a most recently updated and verified for production code branch).
  • local version control database 306 comprises development code branches (e.g., code branches diverging from the master code branch for use in development).
  • one or more code branches are edited by a developer using developer system 300 .
  • a developer using a developer system synchronizes changes made to a local copy of a code branch with the copy of the code branch stored by the version control database.
  • a developer using a developer system synchronizes changes made to a code branch stored by the version control database with a local copy of the code branch.
  • a developer using a developer system merges changes to a development code branch stored by the version control database into a master code branch stored by the version control database.
  • Version control client system 302 additionally comprises comparison graph system 308 .
  • comparison graph system 308 comprises a system for determining and providing a comparison graph.
  • comparison graph system 308 receives version control database information from local version control database 306 . In some embodiments, comparison graph system 308 receives version control system information from a version control server system. In some embodiments, comparison graph system 308 determines comparison graph display information. In various embodiments, comparison graph system 308 provides comparison graph display information to a display system, to user interface system 304 , to another developer system, or to any other appropriate system.
  • FIG. 4 is a block diagram illustrating an embodiment of a comparison graph system.
  • comparison graph system 400 comprises comparison graph system 206 of FIG. 2 .
  • comparison graph system 400 comprises comparison graph system 308 of FIG. 3 .
  • comparison graph system 400 comprises code branch separator 402 .
  • code branch separator 402 comprises a system for determining a first set of commits in a first code branch that are not common to a second code branch.
  • code branch separator 402 comprises a system for determining a second set of commits in the second code branch that are not common to the first code branch.
  • code branch separator 402 is implemented using a processor.
  • Comparison graph system 400 additionally comprises user interface determiner 404 .
  • user interface determiner comprises a user interface determiner for determining a display of the first set of commits and the second set of commits.
  • user interface determiner 404 is implemented using a processor.
  • code branch separator 402 and user interface determiner 404 are implemented using the same processor.
  • code branch separator 402 and user interface determiner 404 are implemented using different processors.
  • FIG. 5 is a flow diagram illustrating an embodiment of a process for comparing code branches.
  • the process of FIG. 5 is executed by comparison graph system 400 of FIG. 4 .
  • a first set of commits in a first code branch that are not common to a second code branch are determined.
  • a second set of commits in the second code branch that are not common to the first code branch are determined.
  • a display of the first set of commits and the second set of commits is determined.
  • FIG. 6A is a flow diagram illustrating an embodiment of a process for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits in the second code branch that are not common to the first code branch.
  • the process of FIG. 6A implements 500 and 502 of FIG. 5 .
  • a merge base of a first code branch and a second code branch is determined.
  • a first code branch commit is selected. For example, data for the first code branch is received and a most recent first commit data is selected.
  • the selected first code branch commit is received.
  • the first code branch commit is added to a first branch data.
  • the first code branch commit is not a commit also in the second code branch, so the first branch data comprises a first set of commits in a first code branch that are not common to a second code branch.
  • a next first code branch commit is selected, and control passes to 604 .
  • a first second code branch commit is selected.
  • the second code branch commit is received.
  • the second code branch commit is added to a second branch data.
  • the second code branch commit is not a commit also in the first code branch, so the second branch data comprises a second set of commits in a second code branch that are not common to a first code branch.
  • a next second code branch commit is selected, and control passes to 614 .
  • the first code branch data and the second code branch data is provided to the comparison graph.
  • FIG. 6B is a flow diagram illustrating an embodiment of a process for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits in the second code branch that are not common to the first code branch.
  • the process of FIG. 6B implements 500 and 502 of FIG. 5 .
  • a first set of commits associated with a first code branch and a second set of commits associated with a second code branch are received.
  • the first set of commits and the second set of commits are received from a version control database.
  • the next commit of the first code branch is selected.
  • the next commit of the first code branch comprises the first commit of the first code branch.
  • it is determined if the selected commit is in the second set of commits (e.g., if the selected commit is common to the first code branch and the second code branch). In the event the selected commit is not in the second set of commits, control passes to 658 . In the event the second commit is in the second set of commits, control passes to 656 . In 656 , the selected commit is removed from the first set of commits and the second set of commits.
  • a commit in the first set of commits and in the second set of commits comprises a merge base and is indicated as such. In some embodiments, a server is requested to provide a merge base.
  • the remaining commits of the first set of commits are provided as the first set of commits in the first code branch that are not common to the second code branch.
  • the remaining commits of the second set of commits are provided as the second set of commits in the second code branch that are not common to the first code branch.
  • FIG. 7 is a flow diagram illustrating an embodiment of a process for determining a display of a first set of commits and a second set of commits.
  • the process of FIG. 7 implements 504 of FIG. 5 .
  • the commits of the first set of commits and the second set of commits are sorted together by time (e.g., the commits of the first set of commits and the commits of the second set of commits are combined into a single list sorted by commit time).
  • the previous commit of the sorted commits is selected.
  • the previous commit comprises the last commit (e.g., the most recent commit).
  • a location for the selected commit is determined.
  • a location for the selected commit comprises a location relative to a next commit (e.g., the location for the selected commit is determined to be a distance from the next commit). In some embodiments, a location relative to a next commit is determined based at least in part on the time difference between the selected commit and the next commit. In 706 , a symbol for the selected commit is determined. In some embodiments, a symbol for the selected commit is determined based at least in part on a commit type. In various embodiments, a commit type comprises unmerged changes to a master code branch, a synced commit, an unsynced commit, an unsynced remote merge, an unsynced remote commit, or any other appropriate commit type.
  • the determined symbol is added to the corresponding code branch line at the determined location.
  • the corresponding code branch line is determined based at least in part on the set of commits associated with the selected commit (e.g., whether the selected commit was part of the first set of commits or the second set of commits).
  • the corresponding code branch line is determined to be either a first code branch line (e.g., corresponding to the first set of commits) or a second code branch line (e.g., corresponding to a second set of commits).
  • it is determined whether the display is full e.g., whether the set of symbols added to code branch lines occupies a full display).
  • 714 e.g., in the event it is determined that the display is full in 710 .
  • FIG. 8 is a flow diagram illustrating an embodiment of a process for determining a location for a commit.
  • the process of FIG. 8 implements 704 of FIG. 7 .
  • a last commit location is determined.
  • a last commit location comprises a display location of the previously displayed commit.
  • a time interval to the last commit is determined.
  • the time interval to the last commit comprises the difference in commit time between the last commit and the commit for which the location is being determined.
  • the distance to the last commit is set to a first distance.
  • the distance to the last commit is set to a second distance. The process then ends.
  • the distance to the last commit is set to a third distance. The process then ends.
  • the distance to the last commit is set to a fourth distance.
  • FIG. 9 is a diagram illustrating an embodiment of a comparison graph.
  • the comparison graph of FIG. 9 comprises a comparison graph determined by comparison graph system 400 of FIG. 4 .
  • the comparison graph of FIG. 9 comprises a set of buttons and an illustration of a set of changes.
  • push button 900 comprises a button for issuing a push command.
  • a push command comprises a command to copy commits made on a local system (e.g., a developer system, e.g., developer system 102 of FIG. 1 ) to a server system (e.g., version control server system 106 of FIG. 1 ).
  • Pull button 902 comprises a button for issuing a pull command.
  • a pull command comprises a command to copy commits made on a server system to the local system.
  • Sync button 904 comprises a button for issuing a sync command.
  • a sync command comprises a push command and a pull command.
  • Rebase button 906 comprises a button for issuing a rebase command.
  • a rebase command issues a rebase command to the local version control system, which removes any un-pushed local changes, pulls changes from the server system, and then reapplies the local changes, one by one, in order.
  • Create pull request button 908 comprises a button for issuing a create pull request command.
  • a create pull request command requests other users look at and review changes pushed to a server system in order that they be reviewed or shared.
  • Update from master button 910 comprises a button for issuing an update from master command.
  • an update from master command merges changes applied to a master branch into a comparison branch.
  • the comparison graph of FIG. 9 additionally comprises master code line 912 and comparison code line 914 .
  • symbols displayed on master code line 912 and comparison code line 914 are spaced (e.g., in the horizontal direction) using the process of FIG. 8 .
  • Symbols applied to master code line 912 indicate changes made to a master code branch and not to a comparison code branch.
  • Symbols applied to comparison code line 914 indicate changes made to a comparison code branch and not to a master code branch.
  • unmerged changes symbol 916 indicates changes to the master code branch not merged into the comparison code branch.
  • Synced commit symbol 918 indicates changes made on the local version of the comparison code branch and pushed to the remote version of the comparison code branch.
  • Unsynced remote merge commit symbol 920 indicates a merge made by another user to the remote version of the comparison code branch that was not pulled to the local version of the comparison code branch.
  • Unsynced commit symbol 922 indicates changes made to the local version of the comparison code branch but not pushed to the remote version of the comparison code branch.
  • Unsynced remote commit symbol 924 indicates a commit made by another user to the remote version of the comparison code branch that was not pulled to the local version of the comparison code branch.
  • Uncommitted changes symbol 926 indicates changes made to the local version of the comparison code branch that have not been committed.
  • a user interface determiner is to provide an indicator for indicating a push command, a pull command, a sync command, a rebase command, a create pull request command, an update from master command, or any other appropriate indicator.

Landscapes

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

Abstract

A comparison graph is disclosed. A system for comparing code branches comprises a code branch separator for determining a first set of commits in a first code branch that are not common to a second code branch, and determining a second set of commits in the second code branch that are not common to the first code branch; and a user interface determiner for determining a display of the first set of commits and the second set of commits.

Description

    CROSS REFERENCE TO OTHER APPLICATIONS
  • This application is a continuation of co-pending U.S. patent application Ser. No. 14/581,937, entitled COMPARISON GRAPH filed Dec. 23, 2014, which is incorporated herein by reference for all purposes.
  • BACKGROUND OF THE INVENTION
  • A software development organization typically utilizes a version control system for maintaining its code through the process of development. A version control system tracks changes made to the code and allows changes to be undone if necessary. A version control system additionally allows a developer to check out a branch of the code for development without affecting the master code branch, and then to merge the checked out branch of the code back into the master code branch when changes to the checked out branch have been completed. Some software development organizations include a large number of developers, each working on their own checked out branch. It can be difficult for a developer to keep track of the changes happening to the main code repository while working on a checked out branch.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
  • FIG. 1 is a block diagram illustrating an embodiment of a system for comparing code branches.
  • FIG. 2 is a block diagram illustrating an embodiment of a version control server system.
  • FIG. 3 is a block diagram illustrating an embodiment of a developer system.
  • FIG. 4 is a block diagram illustrating an embodiment of a comparison graph system.
  • FIG. 5 is a flow diagram illustrating an embodiment of a process for comparing code branches.
  • FIG. 6A is a flow diagram illustrating an embodiment of a process for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits in the second code branch that are not common to the first code branch.
  • FIG. 6B is a flow diagram illustrating an embodiment of a process for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits in the second code branch that are not common to the first code branch.
  • FIG. 7 is a flow diagram illustrating an embodiment of a process for determining a display of a first set of commits and a second set of commits.
  • FIG. 8 is a flow diagram illustrating an embodiment of a process for determining a location for a commit.
  • FIG. 9 is a diagram illustrating an embodiment of a comparison graph.
  • DETAILED DESCRIPTION
  • The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
  • A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
  • A comparison graph is disclosed. A system for comparing code branches comprises a code branch separator for determining a first set of commits in a first code branch that are not common to a second code branch, and determining a second set of commits in the second code branch that are not common to the first code branch; and a user interface determiner for determining a display of the first set of commits and the second set of commits.
  • In some embodiments, a comparison graph comprises a display representing a first set of commits in a first code branch and a second set of commits in a second code branch, wherein the first set of commits are not common to the second code branch and the second set of commits are not common to the first code branch. A version control system used by a software development organization comprises a code repository including many code branches. Some code stored in the code repository comprises a main code branch (e.g., a primary or master code branch verified to function correctly). In some embodiments, when a software developer wants to work on the code stored in the code repository, rather than directly editing the main code branch (e.g., the main code branch should always be known to be good, thus should not be edited directly), the software developer checks out a copy of the main code branch. This checked out copy of the main code branch begins identical to the main code branch. The software developer then edits the checked out code branch to make the desired changes. Each saved change to the checked out code branch comprises a commit. When the commits have been completed and verified as correct, the checked out code branch is merged into the main code branch, applying the commits to the main code branch. A software development organization can have a large number of software developers, each potentially working on one or more checked out code branches for different projects. As a software developer works on a first checked out code branch, it accumulates commits not present in the main code branch. In addition, as other software developers complete projects and merge other checked out code branches into the main code branch, the main code branch accumulates commits not present in the first checked out code branch. A software developer typically needs to be aware of the set of differences between the checked out code branch currently being worked on and the main code branch, in order to prevent or be aware of potential difficulties when merging the checked out code branch into the main code branch. In some embodiments (e.g., when working on a larger project), a software developer checks out a code branch from the main code branch (e.g., as a main branch of the project), and further checks out copies of the checked out code branch to work on. Other developers (e.g., developers working on other aspects of the same larger project) can also check out copies of the checked out code branch. The software developer is then interested in the differences between a checked out code branch and checked out versions of the checked out code branch. In various embodiments, a software developer is interested in differences between a main code branch and a checked out version of the main code branch, a checked out version of a main code branch and a checked out copy of that checked out version, a main code branch and checked out copy of a checked out version of the main code branch, two different checked out copies of a main code branch, or any other appropriate pair of code branches.
  • In some embodiments, the comparison graph displays a timeline of commits of two code branches, wherein only commits not present in both code branches are shown. In some embodiments, the comparison graph displays a first code line comprising a first set of commits, wherein the first set of commits comprises a first set of commits in a first code branch that are not common to a second code branch; and a second code line displaying a second set of commits, wherein the second set of commits comprises a second set of commits in a second code branch that are not common to the first code branch. In some embodiments, a symbol is shown on the code branch to indicate a type of commit (e.g., unmerged changes to a master code branch, a synced commit, an unsynced commit, an unsynced remote merge, an unsynced remote commit, etc.). In some embodiments, commits are shown using a non-linear time scale (e.g., a first spacing between commits is used for commits closer in time than a first threshold, a second spacing between commits is used for commits closer in time than a second threshold, a third spacing between commits is used for commits closer in time than a third threshold, etc.).
  • In some embodiments, the system for comparing code branches comprises a code branch separator for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits that are not common to a first code branch. In some embodiments, when the system for comparing code branches requests commit data from a version control system, the version control system provides the code branch separator with a first set of commits comprising all commits in a first code branch and a second set of commits comprising all commits in a second code branch. The code branch separator then determines the sets of commits unique to each branch. In some embodiments, when the system for comparing code branches requests commit data from a version control system, the version control system provides the system for comparing code branches with the sets of commits unique to each branch. The system for comparing code branches additionally comprises a user interface determiner for determining a display of the first set of commits and the second set of commits.
  • In some embodiments, the system for comparing code branches is used to compare branches of documents other than code (e.g., written documents, computer-aided design files, image files, audio files, video files, etc.).
  • FIG. 1 is a block diagram illustrating an embodiment of a system for comparing code branches. In some embodiments, the network system of FIG. 1 provides communication between any appropriate number of software developers and a version control server system. In the example shown, FIG. 1 comprises network 100. In various embodiments, network 100 comprises one or more of the following: a local area network, a wide area network, a wired network, a wireless network, the Internet, an intranet, a storage area network, or any other appropriate communication network. In the example shown, developer system 102 and developer system 104 comprise systems for use by a software developer while developing software. In various embodiments, developer system 102 and developer system 104 comprise systems for use by any appropriate content developer (e.g., a writer, a video editor, a computer-aided-designer, etc.). In various embodiments, there are 1, 6, 22, 122, 1059, or any other appropriate number of developer systems communicating with network 100. Version control server system 106 comprises a server system for providing version control. In various embodiments, version control server system 106 comprises maintaining copies of developer files (e.g., code), tracking versions of developer files, checking out and tracking developer copies of developer files, checking in developer files, merging developer files, providing copies of master or developer files, or any other appropriate version control function. In some embodiments, a project is maintained on version control server system 106 (e.g., the primary project database is stored on version control server system 106) and developer copies of project files are stored on a developer system (e.g., developer system 102 and developer system 104). In some embodiments, a project is maintained on a developer system (e.g., developer system 102 and developer system 104. In some embodiments, version control server system 106 comprises a system for comparing code branches. In some embodiments, a developer system (e.g., developer system 102 and developer system 104) comprises a system for comparing code branches.
  • FIG. 2 is a block diagram illustrating an embodiment of a version control server system. In some embodiments, version control server system 200 comprises version control server system 106 of FIG. 1. In the example shown, version control server system comprises user interface system 202 for displaying a user interface. In some embodiments, user interface system 202 provides user interface display information. Version control server system 200 additionally comprises version control database 204. In various embodiments, version control database 204 maintains copies of developer files (e.g., code), tracks versions of developer files, checks out and tracks developer copies of developer files, checks in developer copies, merges in developer copies, provides developer copies or master copies, or performs any other appropriate version control function. In some embodiments, version control database 204 maintains a master code branch (e.g., a most recently updated and verified for production code branch). In some embodiments, version control database 204 maintains development code branches (e.g., code branches diverging from the master code branch for use in development). In some embodiments, one or more code branches are developed by a developer using a developer system (e.g., developer system 102 of FIG. 1 or developer system 104 of FIG. 1). In some embodiments, a developer using a developer system maintains a local copy of code branches stored by version control database 204. In some embodiments, a developer using a developer system edits a local copy of a code branch stored by version control database 204. In some embodiments, a developer using a developer system synchronizes changes made to a local copy of a code branch with the copy of the code branch stored by version control database 204. In some embodiments, a developer using a developer system synchronizes changes made to a code branch stored by version control database 204 with a local copy of the code branch. In some embodiments, a developer using a developer system merges changes to a development code branch stored by version control database 204 into a master code branch stored by version control database 204. Version control server system 200 additionally comprises comparison graph system 206. In some embodiments, comparison graph system 206 comprises a system for determining and providing a comparison graph. In some embodiments, comparison graph system 206 receives version control database information from version control database 204. In some embodiments, comparison graph system 206 receives developer system information from a developer system. In some embodiments, comparison graph system 206 determines comparison graph display information. In various embodiments, comparison graph system 206 provides comparison graph display information to a display system, to user interface system 202, to a developer system, or to any other appropriate system.
  • FIG. 3 is a block diagram illustrating an embodiment of a developer system. In some embodiments, developer system 300 of FIG. 3 comprises developer system 102 of FIG. 1 or developer system 104 of FIG. 1. In the example shown, developer system 300 comprises version control client system 302. In various embodiments, version control client system 302 comprises a system for storing developer files, for interacting with a version control server system, for storing checked out copies of developer files from a version control server system, for tracking developer changes, or for performing any other appropriate developer system function. In the example shown, version control client system comprises user interface system 304 for displaying a user interface. In some embodiments, user interface system 304 provides user interface display information. Version control server client system 302 additionally comprises local version control database 306. In various embodiments, local version control database 306 maintains copies of developer files, tracks versions of developer files, stores checked out copies of developer files, interacts with a version control server system (e.g., version control server system 106 of FIG. 1), or performs any other appropriate version control function. In some embodiments, local version control database 306 comprises a local copy of a version control database (e.g., version control database 204 of FIG. 2). In some embodiments, local version control database 306 comprises a master code branch (e.g., a most recently updated and verified for production code branch). In some embodiments, local version control database 306 comprises development code branches (e.g., code branches diverging from the master code branch for use in development). In some embodiments, one or more code branches are edited by a developer using developer system 300. In some embodiments, a developer using a developer system synchronizes changes made to a local copy of a code branch with the copy of the code branch stored by the version control database. In some embodiments, a developer using a developer system synchronizes changes made to a code branch stored by the version control database with a local copy of the code branch. In some embodiments, a developer using a developer system merges changes to a development code branch stored by the version control database into a master code branch stored by the version control database. Version control client system 302 additionally comprises comparison graph system 308. In some embodiments, comparison graph system 308 comprises a system for determining and providing a comparison graph. In some embodiments, comparison graph system 308 receives version control database information from local version control database 306. In some embodiments, comparison graph system 308 receives version control system information from a version control server system. In some embodiments, comparison graph system 308 determines comparison graph display information. In various embodiments, comparison graph system 308 provides comparison graph display information to a display system, to user interface system 304, to another developer system, or to any other appropriate system.
  • FIG. 4 is a block diagram illustrating an embodiment of a comparison graph system. In some embodiments, comparison graph system 400 comprises comparison graph system 206 of FIG. 2. In some embodiments, comparison graph system 400 comprises comparison graph system 308 of FIG. 3. In the example shown, comparison graph system 400 comprises code branch separator 402. In some embodiments, code branch separator 402 comprises a system for determining a first set of commits in a first code branch that are not common to a second code branch. In some embodiments, code branch separator 402 comprises a system for determining a second set of commits in the second code branch that are not common to the first code branch. In some embodiments, code branch separator 402 is implemented using a processor. Comparison graph system 400 additionally comprises user interface determiner 404. In some embodiments, user interface determiner comprises a user interface determiner for determining a display of the first set of commits and the second set of commits. In some embodiments, user interface determiner 404 is implemented using a processor. In some embodiments, code branch separator 402 and user interface determiner 404 are implemented using the same processor. In some embodiments, code branch separator 402 and user interface determiner 404 are implemented using different processors.
  • FIG. 5 is a flow diagram illustrating an embodiment of a process for comparing code branches. In some embodiments, the process of FIG. 5 is executed by comparison graph system 400 of FIG. 4. In the example shown, in 500, a first set of commits in a first code branch that are not common to a second code branch are determined. In 502, a second set of commits in the second code branch that are not common to the first code branch are determined. In 504, a display of the first set of commits and the second set of commits is determined.
  • FIG. 6A is a flow diagram illustrating an embodiment of a process for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits in the second code branch that are not common to the first code branch. In some embodiments, the process of FIG. 6A implements 500 and 502 of FIG. 5. In the example shown, in 600 a merge base of a first code branch and a second code branch is determined. In 602, a first code branch commit is selected. For example, data for the first code branch is received and a most recent first commit data is selected. In 604, the selected first code branch commit is received. In 606, it is determined whether the first code branch commit is the merge base. In the event that the first code branch commit is the merge base, control passes to 612. In the event that the first code branch commit is not the merge base, in 608 the first code branch commit is added to a first branch data. In some embodiments, the first code branch commit is not a commit also in the second code branch, so the first branch data comprises a first set of commits in a first code branch that are not common to a second code branch. In 610, a next first code branch commit is selected, and control passes to 604. In 612, a first second code branch commit is selected. In 614, the second code branch commit is received. In 616, it is determined whether the second code branch commit is the merge base. In the event that the second code branch commit is the merge base, control passes to 622. In the event that the second code branch commit is not the merge base, in 618 the second code branch commit is added to a second branch data. . In some embodiments, the second code branch commit is not a commit also in the first code branch, so the second branch data comprises a second set of commits in a second code branch that are not common to a first code branch. In 620, a next second code branch commit is selected, and control passes to 614. In 622, the first code branch data and the second code branch data is provided to the comparison graph.
  • FIG. 6B is a flow diagram illustrating an embodiment of a process for determining a first set of commits in a first code branch that are not common to a second code branch and determining a second set of commits in the second code branch that are not common to the first code branch. In some embodiments, the process of FIG. 6B implements 500 and 502 of FIG. 5. In the example shown, in 650, a first set of commits associated with a first code branch and a second set of commits associated with a second code branch are received. In some embodiments, the first set of commits and the second set of commits are received from a version control database. In 652, the next commit of the first code branch is selected. In some embodiments, the next commit of the first code branch comprises the first commit of the first code branch. In 654, it is determined if the selected commit is in the second set of commits (e.g., if the selected commit is common to the first code branch and the second code branch). In the event the selected commit is not in the second set of commits, control passes to 658. In the event the second commit is in the second set of commits, control passes to 656. In 656, the selected commit is removed from the first set of commits and the second set of commits. In some embodiments, a commit in the first set of commits and in the second set of commits comprises a merge base and is indicated as such. In some embodiments, a server is requested to provide a merge base. In 658, it is determined whether there are more commits in the first set of commits. In the event there are more commits in the first set of commits, control passes to 652. In the event there are not more commits in the first set of commits, control passes to 660. In 660, the remaining commits of the first set of commits are provided as the first set of commits in the first code branch that are not common to the second code branch. In the 662, the remaining commits of the second set of commits are provided as the second set of commits in the second code branch that are not common to the first code branch.
  • FIG. 7 is a flow diagram illustrating an embodiment of a process for determining a display of a first set of commits and a second set of commits. In some embodiments, the process of FIG. 7 implements 504 of FIG. 5. In the example shown, in 700, the commits of the first set of commits and the second set of commits are sorted together by time (e.g., the commits of the first set of commits and the commits of the second set of commits are combined into a single list sorted by commit time). In 702, the previous commit of the sorted commits is selected. In some embodiments, the previous commit comprises the last commit (e.g., the most recent commit). In 704, a location for the selected commit is determined. In some embodiments, a location for the selected commit comprises a location relative to a next commit (e.g., the location for the selected commit is determined to be a distance from the next commit). In some embodiments, a location relative to a next commit is determined based at least in part on the time difference between the selected commit and the next commit. In 706, a symbol for the selected commit is determined. In some embodiments, a symbol for the selected commit is determined based at least in part on a commit type. In various embodiments, a commit type comprises unmerged changes to a master code branch, a synced commit, an unsynced commit, an unsynced remote merge, an unsynced remote commit, or any other appropriate commit type. In 708, the determined symbol is added to the corresponding code branch line at the determined location. In some embodiments, the corresponding code branch line is determined based at least in part on the set of commits associated with the selected commit (e.g., whether the selected commit was part of the first set of commits or the second set of commits). In some embodiments, the corresponding code branch line is determined to be either a first code branch line (e.g., corresponding to the first set of commits) or a second code branch line (e.g., corresponding to a second set of commits). In 710, it is determined whether the display is full (e.g., whether the set of symbols added to code branch lines occupies a full display). In the event it is determined that the display is full, control passes to 714. In the event it is determined that the display is not full, control passes to 712. In 712, it is determined whether there are more commits (e.g., more commits to add to code branch lines). In the event it is determined that there are more commits, control passes to 702. In the event it is determined that there are not more commits, control passes to 716. In 714 (e.g., in the event it is determined that the display is full in 710), it is determined whether there is less than a threshold number of remaining commits. In the event there is not less than a threshold number of remaining commits, the process ends. In the event there is less than a threshold number of remaining commits, control passes to 716. In 716, more data is requested.
  • FIG. 8 is a flow diagram illustrating an embodiment of a process for determining a location for a commit. In some embodiments, the process of FIG. 8 implements 704 of FIG. 7. In the example shown, in 800, a last commit location is determined. In some embodiments, a last commit location comprises a display location of the previously displayed commit. In 802, a time interval to the last commit is determined. In some embodiments, the time interval to the last commit comprises the difference in commit time between the last commit and the commit for which the location is being determined. In 804, it is determined whether the time interval to the last commit is less than a first threshold. In the event it is determined that the time interval to the last commit is not less than the first threshold, control passes to 808. In the event it is determined that the time interval to the last commit is less than the first threshold, control passes to 806. In 806, the distance to the last commit is set to a first distance. The process then ends. In 808, it is determined whether the time interval to the last commit is less than a second threshold. In the event it is determined that the time interval to the last commit is not less than the second threshold, control passes to 812. In the event it is determined that the time interval to the last commit is less than the second threshold, control passes to 810. In 810, the distance to the last commit is set to a second distance. The process then ends. In 812, it is determined whether the time interval to the last commit is less than a third threshold. In the event it is determined that the time interval to the last commit is not less than the third threshold, control passes to 816. In the event it is determined that the time interval to the last commit is less than the third threshold, control passes to 814. In 814, the distance to the last commit is set to a third distance. The process then ends. In 816, the distance to the last commit is set to a fourth distance.
  • FIG. 9 is a diagram illustrating an embodiment of a comparison graph. In some embodiments, the comparison graph of FIG. 9 comprises a comparison graph determined by comparison graph system 400 of FIG. 4. In the example shown, the comparison graph of FIG. 9 comprises a set of buttons and an illustration of a set of changes. In the example shown, push button 900 comprises a button for issuing a push command. In some embodiments, a push command comprises a command to copy commits made on a local system (e.g., a developer system, e.g., developer system 102 of FIG. 1) to a server system (e.g., version control server system 106 of FIG. 1). Pull button 902 comprises a button for issuing a pull command. In some embodiments, a pull command comprises a command to copy commits made on a server system to the local system. Sync button 904 comprises a button for issuing a sync command. In some embodiments, a sync command comprises a push command and a pull command. Rebase button 906 comprises a button for issuing a rebase command. In some embodiments, a rebase command issues a rebase command to the local version control system, which removes any un-pushed local changes, pulls changes from the server system, and then reapplies the local changes, one by one, in order. Create pull request button 908 comprises a button for issuing a create pull request command. In some embodiments, a create pull request command requests other users look at and review changes pushed to a server system in order that they be reviewed or shared. Update from master button 910 comprises a button for issuing an update from master command. In some embodiments, an update from master command merges changes applied to a master branch into a comparison branch.
  • In the example shown, the comparison graph of FIG. 9 additionally comprises master code line 912 and comparison code line 914. In some embodiments, symbols displayed on master code line 912 and comparison code line 914 are spaced (e.g., in the horizontal direction) using the process of FIG. 8. Symbols applied to master code line 912 indicate changes made to a master code branch and not to a comparison code branch. Symbols applied to comparison code line 914 indicate changes made to a comparison code branch and not to a master code branch. In the example shown, unmerged changes symbol 916 indicates changes to the master code branch not merged into the comparison code branch. Synced commit symbol 918 indicates changes made on the local version of the comparison code branch and pushed to the remote version of the comparison code branch. Unsynced remote merge commit symbol 920 indicates a merge made by another user to the remote version of the comparison code branch that was not pulled to the local version of the comparison code branch. Unsynced commit symbol 922 indicates changes made to the local version of the comparison code branch but not pushed to the remote version of the comparison code branch. Unsynced remote commit symbol 924 indicates a commit made by another user to the remote version of the comparison code branch that was not pulled to the local version of the comparison code branch. Uncommitted changes symbol 926 indicates changes made to the local version of the comparison code branch that have not been committed.
  • In various embodiments, a user interface determiner is to provide an indicator for indicating a push command, a pull command, a sync command, a rebase command, a create pull request command, an update from master command, or any other appropriate indicator.
  • Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.

Claims (20)

What is claimed is:
1. (canceled)
2. A method for determining and graphically representing commonality between a first code branch and a second code branch, comprising:
determining that a commit in the first code branch is a merge base for the first code branch and the second code branch;
if the commit in the first code branch is a merge base, determining that a commit in the second branch is another merge base; and
if the commit in the second branch is another merge base, rendering data from the first code branch and data from the second code branch on a comparison graph, wherein the comparison graph includes at least one symbol representing a state of commits in the first code branch and the second code branch.
3. The method of claim 2, further comprising:
determining the merge base of the first code branch and the second code branch; and
subsequent to the determination of the merge base, selecting a first code branch commit.
4. The method of claim 3, wherein the selection of a first code branch commit includes receiving data associated with the first code branch and selecting a most recent first commit data.
5. The method of claim 3, further comprising, subsequent to the selection of the first code branch commit, receiving a selected first code branch commit.
6. The method of claim 2, further comprising determining that a commit in the first code branch is not a merge base for the first code branch and the second code branch.
7. The method of claim 6, further comprising if the first code branch is not a merge base for the first code branch and the second code branch, adding the commit in the first code branch to first branch data.
8. The method of claim 6, further comprising if the first code branch is not a merge base for the first code branch and the second code branch:
adding the commit in the first code branch to first branch data; and
selecting a next first code branch commit.
9. The method of claim 2, further comprising, subsequent to the determination that a commit in the first code branch is a merge base for the first code branch and the second code branch, selecting a first second code branch commit.
10. The method of claim 2, further comprising, subsequent to the determination that a commit in the first code branch is a merge base for the first code branch and the second code branch, receiving a selected second code branch commit.
11. The method of claim 2, further comprising determining that a commit in the second code branch is not a merge base for the first code branch and the second code branch.
12. The method of claim 11, further comprising if the first code branch is not a merge base for the first code branch and the second code branch, adding the commit in the second code branch to second branch data.
13. The method of claim 11, further comprising if the first code branch is not a merge base for the first code branch and the second code branch:
adding the commit in the second code branch to second branch data; and
selecting a next second code branch commit.
14. A method for determining and graphically representing commonality between a first code branch and a second code branch, comprising:
receiving a first set of commits, wherein the first set is associated with the first code branch;
receiving a second set of commits, wherein the second set is associated with the second code branch;
filtering at least one of the first set and the second set, including:
for a selected commit of the first set, determining that the selected commit is a member of the second set;
if the selected commit is a member of the second set, removing the selected commit from the first set and the second set; and
determining that those remaining commits in the first set are not in common with those remaining commits in the second set; and
rendering the at least one of the first set and the second set on a comparison graph, wherein each of the commits is represented by a symbol representing a state of the commit.
15. The method of claim 14, wherein the rendering the at least one of the first set and the second set on a comparison graph includes providing remaining commits of the first set of commits as the first set of commits in the first code branch that are not common to the second code branch.
16. The method of claim 14, wherein the rendering the at least one of the first set and the second set on a comparison graph includes providing remaining commits of the second set of commits as the second set of commits in the second code branch that are not common to the first code branch.
17. The method of claim 14, further comprising, prior to the filtering, selecting a next commit of the first code branch.
18. The method of claim 14, wherein the filtering further includes: if the selected commit is a member of the second set, the commit is indicated as a merge base.
19. The method of claim 14, further comprising requesting a merge base from a server.
20. A method for determining and graphically representing commonality between a first code branch and a second code branch, comprising:
determining whether a commit in the first code branch is a merge base for the first code branch and the second code branch;
if the commit in the first code branch is a merge base, determining whether a commit in the second branch is another merge base; and
if a commit in a second code branch is another merge base, rendering data from the first code branch and data from the second code branch on a comparison graph, wherein the comparison graph includes at least one symbol representing a state of commits in the first code branch and the second code branch.
US15/382,346 2014-12-23 2016-12-16 Comparison graph Abandoned US20170269909A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/382,346 US20170269909A1 (en) 2014-12-23 2016-12-16 Comparison graph

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/581,937 US9557968B1 (en) 2014-12-23 2014-12-23 Comparison graph
US15/382,346 US20170269909A1 (en) 2014-12-23 2016-12-16 Comparison graph

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US14/581,937 Continuation US9557968B1 (en) 2014-12-23 2014-12-23 Comparison graph

Publications (1)

Publication Number Publication Date
US20170269909A1 true US20170269909A1 (en) 2017-09-21

Family

ID=57867508

Family Applications (2)

Application Number Title Priority Date Filing Date
US14/581,937 Active US9557968B1 (en) 2014-12-23 2014-12-23 Comparison graph
US15/382,346 Abandoned US20170269909A1 (en) 2014-12-23 2016-12-16 Comparison graph

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US14/581,937 Active US9557968B1 (en) 2014-12-23 2014-12-23 Comparison graph

Country Status (1)

Country Link
US (2) US9557968B1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109408104A (en) * 2018-09-18 2019-03-01 天津龙拳风暴科技有限公司 A kind of method and device for obtaining game and integrating information
US20190205127A1 (en) * 2017-12-29 2019-07-04 Semmle Limited Commit reversion detection
US10467004B2 (en) 2017-12-28 2019-11-05 Semmle Limited Commit history linearization
US10768929B1 (en) * 2019-11-13 2020-09-08 Atlassian Pty Ltd. Automatically updating source code in version control systems via a pull request
US11741084B2 (en) * 2019-09-27 2023-08-29 Autodesk, Inc. High frequency data management (HFDM)
US20230401057A1 (en) * 2022-06-14 2023-12-14 Microsoft Technology Licensing, Llc Video-Based Progress Tracker for Mobile Application Development

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11307848B2 (en) 2019-07-01 2022-04-19 Bank Of America Corporation System for electronic integration and deployment of computer code in a code development network
CN111240692B (en) * 2020-01-17 2023-05-26 北京简单一点科技有限公司 Code branch conflict early warning method
US11354118B2 (en) 2020-06-05 2022-06-07 Cross Vista, Inc. Version control system
US20220134222A1 (en) * 2020-11-03 2022-05-05 Nvidia Corporation Delta propagation in cloud-centric platforms for collaboration and connectivity
US11914994B2 (en) * 2021-12-17 2024-02-27 Rockwell Automation Technologies, Inc. Collaborative work in industrial system projects
US20230229435A1 (en) * 2022-01-20 2023-07-20 Salesforce.Com, Inc. Code management cross-support and synchronization

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090083102A1 (en) * 2007-09-21 2009-03-26 Oculus Technologies Corporation Computer method and apparatus for engineered product management using a project view and a visual grammar

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6024559B2 (en) * 2013-03-28 2016-11-16 富士通株式会社 Program and version control method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090083102A1 (en) * 2007-09-21 2009-03-26 Oculus Technologies Corporation Computer method and apparatus for engineered product management using a project view and a visual grammar

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Git Documentation, "git-log(1) Manual Page", http://git-scm.com/docs/gits-log, from Internet Archive dated 30 Oct 2013 *
Stack Overflow, "How do I see the commit differences between branches in git?", http://stackoverflow.com/questions/13965391/how-do-i-see-the-commit-differences-between-branches-in-git, posted 20 Dec 2012, accessed on 2 Oct 2017 *
Tower Help, "Commit Details", http://www.git-tower.com/help/mac/commit-history/commit-details, from Internet Archive dated 25 July 2014 *
Tower Help, "Comparing Branches & Revisions", https://git-tower.com/help/mac/commit-history/compare-branches-revisions, from Internet Archive 8 Aug 2014, accessed on 2 Oct 2017 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467004B2 (en) 2017-12-28 2019-11-05 Semmle Limited Commit history linearization
US10853063B2 (en) * 2017-12-28 2020-12-01 Microsoft Technology Licensing, Llc Commit history linearization
US20190205127A1 (en) * 2017-12-29 2019-07-04 Semmle Limited Commit reversion detection
US10963244B2 (en) * 2017-12-29 2021-03-30 Microsoft Technology Licensing, Llc Commit reversion detection
CN109408104A (en) * 2018-09-18 2019-03-01 天津龙拳风暴科技有限公司 A kind of method and device for obtaining game and integrating information
US11741084B2 (en) * 2019-09-27 2023-08-29 Autodesk, Inc. High frequency data management (HFDM)
US10768929B1 (en) * 2019-11-13 2020-09-08 Atlassian Pty Ltd. Automatically updating source code in version control systems via a pull request
US11294667B2 (en) 2019-11-13 2022-04-05 Atlassian Pty Ltd. Automatically updating source code in version control systems via a pull request
US20230401057A1 (en) * 2022-06-14 2023-12-14 Microsoft Technology Licensing, Llc Video-Based Progress Tracker for Mobile Application Development
WO2023244408A1 (en) * 2022-06-14 2023-12-21 Microsoft Technology Licensing, Llc Video-based progress tracker for mobile application development

Also Published As

Publication number Publication date
US9557968B1 (en) 2017-01-31

Similar Documents

Publication Publication Date Title
US20170269909A1 (en) Comparison graph
US9477786B2 (en) System for metadata management
US9135312B2 (en) Timeslider
US5317730A (en) System for modifying persistent database based upon set of data elements formed after selective insertion or deletion
US20180034868A1 (en) User notifications for interaction information
US20150261805A1 (en) Multi-version concurrency control across row store and column store
US11593336B2 (en) Data pipeline branching
US20070162486A1 (en) Merge tool for structured object models
US20090138525A1 (en) User profile replication
WO2009045918A2 (en) Intelligent editing of relational models
US10705832B2 (en) Efficient storage and analysis of source code modification history data
US9922100B2 (en) Systems and methods for facilitating the development of an application that accesses data
US20190147032A1 (en) Data flow view for a spreadsheet
EP2199903A1 (en) Metadata model repository
US9442719B2 (en) Regression alerts
US9514107B1 (en) Webpage creation tool for accelerated webpage development for at least one mobile computing device
US10733206B2 (en) Propagating computable dependencies within synchronized content items between first and third-party applications
US9015116B2 (en) Consistent replication of transactional updates
US20150026081A1 (en) Method and system for managing standards
Leite et al. UEDashboard: Awareness of unusual events in commit histories
CN109344249B (en) Information processing method, information processing device, electronic equipment and computer readable storage medium
US20070156775A1 (en) Metadata transformation in copy and paste scenarios between heterogeneous applications
US20170262417A1 (en) Summarized document version map
EP4109287A1 (en) A collaborative system and method for multi-user data management
US9558163B1 (en) Method for accelerated webpage development for at least one mobile computing device

Legal Events

Date Code Title Description
AS Assignment

Owner name: GITHUB, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SMITH, STEPHEN;GREG, DANNY;AHLIN, KARL TOBIAS;SIGNING DATES FROM 20150324 TO 20150331;REEL/FRAME:047624/0032

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GITHUB, INC.;REEL/FRAME:053446/0509

Effective date: 20200626

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION