IP Library Granted Patent US 10,853,063
Granted Patent B2
US 10,853,063 · App. 16/663,002 · Granted Dec 1, 2020

Commit history linearization

Inventor: Robin Neatherway (Oxford, GB)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F8/77G06F8/71
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,853,063
App. No.
16/663,002
Granted
Dec 1, 2020
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for linearizing the commit history of a code base. One of the methods includes receiving a request to attribute source code contributions to a particular snapshot in a project having a revision graph with multiple branches. Source code contributions occurring in each non-merge commit on a single path through the revision graph are attributed to a responsible developer entity of the non-merge commit. Each merge commit is processed on the single path including identifying contributions introduced by the merge commit, identifying one or more respective responsible developer entities for the contributions occurring in the one or more feature branch snapshots from one or more feature branches, and attributing source code contributions occurring in the one or more feature branch snapshots from the one or more feature branches to the identified one or more respective responsible developer entities.

Claims (32)

1. A system comprising:

one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to configure the one or more computers to perform the following:

receive a request to attribute source code contributions to a particular commit in a project having a revision graph with multiple branches, including a master branch that corresponds with a designated single path through the revision graph and that includes the particular commit, the revision graph also including at least a first feature branch and at least a second feature branch that include source code contributions that are not part of the master branch;

attribute non-merge-commit contributions occurring on the master branch for each non-merge commit on the master branch, by attributing each non-merge commit to corresponding responsible developer entity of each non-merge commit; and

process each merge commit on the single path of the master branch by at least:

identifying, for each merge-commit contribution of a feature branch with the master branch, a merge commit that merges a master branch commit with at least one feature branch commit; and

attributing one or more merge-commit contributions from at least the first feature branch, to any corresponding responsible developer entity of the one or more merge-commit contributions, while ignoring at least one non-merge source code contribution from the second feature branch of the revision graph that is not merged with the master branch, and so as to refrain from attributing the at least one non-merge source code contribution of the second feature branch to the responsible developer entity.

2. The system of claim 1 , wherein the source code contributions comprise violation introductions, violation removals, or both.

3. The system of claim 2 , wherein the instructions are further operable to configure the one or more computers to compute transitive violation matching information for violations introduced or removed in one or more feature branch commits.

4. The system of claim 1 , wherein the instructions are further operable to configure the one or more computers to receive the designation of the single path through the revision graph defining the master branch as user input specifying a plurality of snapshots including the particular commit.

5. The system of claim 1 , wherein receiving a designation of a single path through the revision graph defining a master branch comprises receiving a designation of a master branch according to a version control system.

6. A method implemented by a computing system, the method comprising:

receiving user input defining a designated single path through a revision graph, the revision graph including multiple branches including a master branch that comprises the designated single path through the revision graph and that includes a particular commit, the revision graph also including at least a first feature branch and at least a second feature branch that include source code contributions that are not part of the master branch;

receiving a request to attribute source code contributions to the particular commit in the revision graph;

attributing non-merge-commit contributions occurring on the master branch for each non-merge commit on the master branch, by attributing each non-merge commit to corresponding responsible developer entity of each non-merge commit; and

processing each merge commit on the single path of the master branch by at least:

identifying, for each merge-commit contribution of a feature branch with the master branch, a merge commit that merges a master branch commit with at least one feature branch commit; and

attributing one or more merge-commit contributions from at least the first feature branch, to any corresponding responsible developer entity of the one or more merge-commit contributions, while ignoring at least one non-merge source code contribution from at least the second feature branch of the revision graph that is not merged with the master branch, and so as to refrain from attributing the at least one non-merge source code contribution of the second feature branch to the responsible developer entity.

7. The method of claim 6 , wherein the source code contributions comprise violation introductions, violation removals, or both.

8. The method of claim 6 , wherein the method further includes computing transitive violation matching information for violations introduced or removed in one or more feature branch commits.

9. The method of claim 6 , wherein receiving a designation of a single path through the revision graph defining a master branch comprises receiving a designation of a master branch according to a version control system.

10. A computer program product comprising:

one or more hardware storage devices having stored computer-executable instructions that are operable, when executed by one or more processors, to configure the one or more processors to perform the following:

receive a request to attribute source code contributions to a particular commit in a project having a revision graph with multiple branches, including a master branch that corresponds with a designated single path through the revision graph and that includes the particular commit, the revision graph also including at least a first feature branch and at least a second feature branch that include source code contributions that are not part of the master branch;

attribute non-merge-commit contributions occurring on the master branch for each non-merge commit on the master branch, by attributing each non-merge commit to corresponding responsible developer entity of each non-merge commit; and

process each merge commit on the single path of the master branch by at least:

identifying, for each merge-commit contribution of a feature branch with the master branch, a merge commit that merges a master branch commit with at least one feature branch commit; and

attributing one or more merge-commit contributions from at least the first feature branch, to any corresponding responsible developer entity of the one or more merge-commit contributions, while ignoring at least one non-merge source code contribution from the second feature branch of the revision graph that is not merged with the master branch, and so as to refrain from attributing the at least one non-merge source code contribution of the second feature branch to the responsible developer entity.

11. The computer program product of claim 10 , wherein the source code contributions comprise violation introductions, violation removals, or both.

12. The computer program product of claim 11 , wherein the instructions are further operable to configure the one or more computers to compute transitive violation matching information for violations introduced or removed in one or more feature branch commits.

13. The computer program product of claim 10 , wherein the instructions are further operable to configure the one or more computers to receive the designation of the single path through the revision graph defining the master branch as user input specifying a plurality of snapshots including the particular commit.

14. The computer program product of claim 10 , wherein receiving a designation of a single path through the revision graph defining a master branch comprises receiving a designation of a master branch according to a version control system.

Assignments (3)
CHANGE OF NAME Recorded May 20, 2020
From: SEMMLE LTD.
To: GITHUB SOFTWARE UK LTD.
Reel/Frame 052716/0170 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2020
From: GITHUB SOFTWARE UK LTD.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 052716/0351 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 2, 2020
From: NEATHERWAY, ROBIN
To: SEMMLE LIMITED
Reel/Frame 051403/0163 →
Continuity (2)
Continuation 15857229 · Dec 28, 2017
Related Publication 20200150956A1 · May 14, 2020