Tagging Non-Upstream Source Code for Reliable Patch Migration

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In open source software development, non-upstream patches are often lost during the transition from one software release to another due to the lack of identification and tagging, leading to errors in manual relocation processes.

Innovation Solution

A method and system using a processing device to identify and label source code objects as either upstream or non-upstream by determining commit identifiers in a version-controlled code repository, allowing for reliable migration of non-upstream patches to a new storage location.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If manual relocation process is used for non-upstream patches, then flexibility in handling patches is maintained, but errors and losses occur during transition between releases

Engineering Contradiction:
Improvepatch relocation reliabilityVSAvoidmigration process complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system performs preliminary identification and tagging of non-upstream patches before the migration process. By analyzing commit identifiers and marking patches as non-upstream in advance, the system prepares the migration path and eliminates the need for complex manual relocation operations during the actual transition between releases.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system introduces an intermediary mechanism using commit identifiers and tags as mediators between the old release storage location and the new release storage location. These intermediaries enable automatic identification and routing of non-upstream patches, eliminating direct manual intervention and reducing errors during migration.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If no identification tagging is used for non-upstream patches, then storage space is saved and simplicity is maintained, but patches are lost during release transition

Engineering Contradiction:
Improvepatch identification accuracyVSAvoidstorage space consumption
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The system applies local quality by adding identification tags only to non-upstream patches rather than all patches. This selective tagging approach uses minimal additional storage space while providing accurate identification where needed, allowing the system to distinguish between upstream and non-upstream patches without consuming excessive storage resources.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system creates a copy of the patch metadata including commit identifiers and tags, rather than storing complete patch copies separately. This copying approach enables identification and tracking of non-upstream patches using minimal additional data, maintaining storage efficiency while ensuring accurate patch identification during migration.

Inventive Principle:
Principle #26Copying

3Ease of operation

If all patches are treated equally in storage, then storage management is simplified, but non-upstream patches cannot be reliably migrated

Engineering Contradiction:
Improvestorage management easeVSAvoidpatch migration reliability
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The system segments patches into two distinct categories: upstream patches and non-upstream patches, based on their commit identifier characteristics. This segmentation enables different management strategies for each type - upstream patches continue to be stored and managed traditionally, while non-upstream patches receive special tagging and migration handling, thus maintaining operational simplicity while improving migration reliability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system changes the parameter of patch identification by introducing tag fields and commit identifier analysis as distinguishing parameters. This parameter change enables the system to differentiate between upstream and non-upstream patches in the storage metadata, allowing reliable migration of non-upstream patches while maintaining simple storage management for upstream patches through unchanged processes.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS9639350B2Tagging non-upstream source code
Publication Date: 2017.05.02 RED HAT INC
  • US9639350B2 patent drawing
  • US9639350B2 patent drawing
  • US9639350B2 patent drawing

AI summary

A method relates to identifying, by a processing device, a plurality of source code objects associated with an open source product stored in a version-controlled code repository, determining a first subset of the plurality of source code objects associated with a respective commit identifier indicating that each of the first subset of the plurality of source code objects is committed to the version-controlled code repository, determining a second subset of the plurality of source code objects not associated with any commit identifier of the version-controlled code repository, labeling each of the first subset of the plurality of source code objects as an upstream source code object, and labeling each of the second subset of the plurality of source code objects as a non-upstream source code object.