Shelving Work in Progress for Source Code Control
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current source code control systems require complex branching processes to manage work in progress, which increases workload for developers and administrators and complicates the repository structure, failing to provide efficient archiving and sharing of unfinished work without risking exposure to the team.
Innovation Solution
The introduction of 'Shelving' allows developers to archive and restore the state of their work in progress within a version control system without formal commit or check-in, enabling temporary checkpoints and sharing of semi-stable work versions, while maintaining short-term historical context.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If branching is used to manage work in progress, then work can be archived and restored, but the process becomes complicated and increases workload for developers and administrators
Solution Approach 1:
The patent segments the version control functionality by introducing a distinct shelving mechanism separate from formal branching. This allows work-in-progress to be archived in lightweight shelves rather than requiring full branch creation, merging, and management. The shelving feature isolates the archiving function from the complexity of complete branching workflows.
Solution Approach 2:
The patent extracts the core archiving function from the branching process. Instead of requiring developers to use full branching capabilities to preserve work, the shelving feature pulls out just the archiving and restoration capabilities into a separate, simplified operation. This eliminates the need for branch creation, merging, and other complex branching operations while maintaining work preservation functionality.
2Reliability
If formal commit or check-in is performed to store work in progress, then work is secured in the repository, but the work becomes exposed to the team and assumes risk of consumption
Solution Approach 1:
The patent applies local quality by creating a specialized storage location (shelves) with different access characteristics than the main repository. Shelved work receives local protection through the shelving mechanism, allowing it to be stored securely in the repository infrastructure while maintaining restricted visibility. Only authorized users can access shelved work, and it remains distinct from the main code stream until formally committed.
3Object-affected harmful factors
If work remains in private workspace, then team exposure risk is avoided, but the work does not benefit from SCC system features like backup and version control
Solution Approach 1:
The patent creates an asymmetric relationship between work storage and work exposure. Through shelving, work can be stored in the centralized repository (gaining SCC benefits like backup, version control, and security) while maintaining asymmetric access control that prevents premature team exposure. The shelving mechanism breaks the symmetry between storage location and visibility, allowing work to be repository-stored but privately-accessible.
4Adaptability or versatility
If branching is used to share work in progress, then collaboration is enabled, but the repository structure becomes significantly more difficult to work with over time
Solution Approach 1:
The patent merges the work sharing capability into the existing shelving and checkout mechanisms rather than requiring separate branching infrastructure. Developers can share shelved work with team members through controlled checkout operations, combining collaboration functionality with the lightweight shelving approach. This avoids the need for multiple branches and complex merge operations while maintaining collaborative capabilities.
Data Source
AI summary
The present invention relates to a system and methodology to facilitate software development activities via the concept of “Shelving” which provides an improved alternative to conventional branching technologies in certain scenarios. In one aspect, a software development system is provided. The system includes a shelving component that captures a current state of an intermediate software design. A version control component processes the intermediate design as if the intermediate design were a completed software design.


