Commit History Linearization for Accurate Developer Attribution
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
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
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.
Data Source
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.


