Commit History Linearization for Accurate Developer Attribution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Attributing source code contributions across multiple branches in a code base is challenging due to branching and merging processes, which can lead to incorrect attribution of work to developers and obscure the progress of a software project, especially when not all branches have equal importance.

Innovation Solution

A static analysis system linearizes the commit history by designating a single path through the revision graph as the master branch, using special handling for merge commits to accurately attribute contributions and trim noise from the data, allowing for reliable and trustworthy metrics to be displayed in a one-dimensional format.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If branching and merging processes are used to enable parallel development, then productivity and adaptability are improved, but attribution accuracy and measurement precision deteriorate due to incorrect credit assignment

Engineering Contradiction:
Improveparallel development capabilityVSAvoidattribution accuracy
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

The patent segments the complex multi-branch commit history into a linearized sequence by selecting a single path (master branch) as the reference. This segmentation allows the system to process contributions along one clear path while separately tracking feature branch contributions, thereby resolving attribution conflicts that arise from parallel development.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a linearized commit history as an intermediary representation between the actual multi-branch development process and the attribution analysis. This intermediary structure preserves the chronological order and contribution information while eliminating the complexity of multiple branching paths, enabling accurate attribution without sacrificing parallel development capabilities.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Quantity of substance

If all branches are treated equally in attribution analysis, then completeness of data is improved, but clarity and understanding of project progress deteriorate due to noise from abandoned features

Engineering Contradiction:
Improvedata completenessVSAvoidproject progress clarity
Core Design Contradiction:
Quantity of substanceVSEase of operation

Solution Approach 1:

The patent applies local quality by treating different branches differently based on their importance. The master branch is given special status as the reference path for linearization, while feature branches are processed separately. This allows the system to maintain data completeness from all branches while presenting information in a clear, organized manner that highlights important progress.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent extracts contributions from feature branches separately from the master branch lineage. By taking out feature branch contributions and processing them independently, the system can include their data in the overall analysis without allowing them to create confusion in the main project progress visualization, thus maintaining both completeness and clarity.

Inventive Principle:
Principle #2Taking out (Extraction)

3Speed

If merge commits are processed without special handling, then processing speed is improved, but attribution accuracy deteriorates due to incorrect credit assignment across branches

Engineering Contradiction:
Improveprocessing speedVSAvoidcontribution attribution accuracy
Core Design Contradiction:
SpeedVSMeasurement precision

Solution Approach 1:

The patent performs preliminary action by identifying and marking merge commits in advance during the linearization process. By pre-identifying which commits are merges and which are regular commits on the master branch, the system can apply appropriate attribution logic to each type, ensuring accuracy without requiring complex real-time analysis during processing.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10853063B2Commit history linearization
Publication Date: 2020.12.01 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10853063B2 patent drawing
  • US10853063B2 patent drawing
  • US10853063B2 patent drawing

AI summary

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.