Partial Build System for Source Code Version Consistency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In large code bases, the process of updating and building applications is time-consuming for developers, especially in collaborative environments where multiple developers work on different modules, leading to significant hours spent on the development process.

Innovation Solution

Implementing a partial build method that updates source code and binary code by determining differences between versions in central and local repositories, allowing only modified modules to be rebuilt and tested, thereby reducing the need to rebuild the entire code base.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Stability of the object's composition

If the entire code base is rebuilt to ensure all developers have the latest version, then version consistency is improved, but build time increases significantly

Engineering Contradiction:
Improveversion consistencyVSAvoidbuild time
Core Design Contradiction:
Stability of the object's compositionVSLoss of time

Solution Approach 1:

The build process is segmented into two parts: (1) a full build that creates a baseline version stored in a binary repository, and (2) a partial build that only recompiles modified modules by comparing source code differences. This segmentation allows the system to maintain version consistency while avoiding unnecessary rebuilding of unchanged modules, thus reducing build time.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary actions by storing binary versions of previously built applications in a binary repository. Before performing a new build, it compares the current source code with the stored version to identify changes. This preliminary comparison action enables the system to skip building unchanged modules, resolving the contradiction between ensuring version consistency and minimizing build time.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If only modified modules are rebuilt to reduce build time, then productivity is improved, but ensuring version consistency becomes more complex

Engineering Contradiction:
Improvedevelopment efficiencyVSAvoidbuild process complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

A binary repository acts as an intermediary between the source code and the final application. It stores binary versions of previously built applications and provides them to the build system. This intermediary simplifies the partial build process by enabling the system to retrieve pre-built binaries for unchanged modules, thus improving productivity without significantly increasing build process complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If all source code is downloaded to ensure completeness, then code completeness is improved, but update time increases

Engineering Contradiction:
Improvecode completenessVSAvoidupdate time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system extracts only the necessary information from the source code repository—the differences or deltas between versions—rather than downloading the entire code base. By using diff tools to identify changed modules and retrieving only those specific modules along with their corresponding binaries from the binary repository, the system maintains code completeness while significantly reducing update time.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS10282175B2Methods and systems for performing a partial build
Publication Date: 2019.05.07 SALESFORCE INC
  • US10282175B2 patent drawing
  • US10282175B2 patent drawing
  • US10282175B2 patent drawing

AI summary

Some embodiments of the present invention include updating an existing version of a source code stored in a local source repository using differences between a most current version of a source code stored in a central source repository and the existing version of the source code stored in the local source repository, the most current version of the source code associated with an application; updating an existing version of a binary code stored in a local binary repository to a most current version using differences between a most current version of a binary code stored in a central binary repository and the existing version of the binary code stored in the local binary repository; updating the most current version of the binary code stored in the local binary repository using binary code of one or more modified source code modules to generate a first binary code; and enabling testing of the application using the first binary code.