Lightweight methods for storing work in progress in a source code control system
AssigneeMicrosoft Corporation
InventorsBrian D. Harry, Craig A. Harry, Justin E. Pinnix, Douglas T. Neumann
Life of this patent
Estimating the term…
Abstract
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.
Claims21
A software development system embodied on a computer readable storage medium, comprising:
- a shelving component that captures a current state of an intermediate software design containing pending changes developed on a private workspace and stores the captured state to a version control system without a formal commit or check-in to the version control system, the shelving components stores the pending changes to the version control system to either a shelf space or a committed work space, wherein user selection of a preserve option associated with the shelving component causes the pending changes to be maintained on the private workspace when the intermediate software design is archived, and leaving the preserve option unselected causes the pending changes to be removed from the software design on the private workspace after the current state has been captured, the version control system processing the intermediate software design as a completed software design;
- and
- an unshelving component that enables authorized users to retrieve respective versions of code captured by the shelving component to a private workspace to produce intermediate versions or builds of software in cases that utilize the shelf space, or final versions or builds of software in cases that utilize the committed work space, the captured intermediate software design is deleted from the version control system when the retrieval is initiated by an owner of the intermediate software design, and the captured intermediate software design is preserved on the version control system when retrieval is initiated by a non-owner of the software.
A code development system embodied on a computer-readable storage medium, comprising:
- means for developing pending changes on non-finalized software on a private workspace;
- means for archiving the non-finalized software with pending changes to a version control system without a formal commit or check-in to the version control system;
- means for capturing one or more states associated with the non-finalized software to one of a shelf space or p committed work space;
- means for maintaining the pending changes on the private workspace after archival when a preserve option is selected;
- means for removing the pending changes from the non-finalized software on the private workspace upon archival when the preserve option is not selected;
- means for processing the archived non-finalized software along with finalized software on the version control system;
- means for retrieving versions of the archived software to a private workspace to produce either intermediate versions of the software in cases that utilize the shelf space or final versions of the software in eases that utilize the committed work space;
- means for deleting the archived software from the version control system when the retrieval is initiated by an owner of the non-finalized software;
- and
- means for preserving the archived software from the version control system when the retrieval is initiated by a non-owner of the non-finalized software.
A method to facilitate code development, comprising:
- creating a version of software in a private development system;
- automatically determining at least one state for the software;
- shelving the software and the state on a version control system to one of a shelf space or a committed work space without a formal commit or check-in to the version control system;
- and
- maintaining the pending changes on the private development system after shelving when a preserve option is selected;
- removing the pending changes from the software on the private workspace after shelving when the preserve option is not selected;
- unshelving the version of software to a private workspace in accordance with the state, the version of software is deleted from the version control system when unshelving is initiated by an owner of the software, and the version of software is preserved on the version control system when unshelving is initiated by a non-owner of the software;
- producing an intermediate version of the software on the private workspace when the unshelving is performed on software shelved to the shelf space;
- and
- producing a final version of the software on the private workspace when the unshelving is performed on software shelved to the committed work space.
A user interface embodied on a computer-readable storage medium for archiving intermediate versions of code, comprising:
- a display component to highlight one or more files on a private workspace to archive on a version control system, the files contain pending changes associated with an intermediate version of code;
- a shelving command input to enable users to archive the intermediate files with pending changes to one of a shelf space or a committed work space in a version control system without a formal commit or check-in to the version control system, wherein archiving removes the pending changes from the intermediate files on the private workspace when a preserve option associated with the shelving command is not selected, and maintains the pending changes on the private workspace when the preserve option is selected;
- and
- an unshelving command input that enables authorized users to retrieve the archived files to a private workspace to produce intermediate versions or builds of the software in cases that utilize the shelf space, or final versions or builds of the software in cases that utilize the committed work space, wherein the archived files are deleted from the version control system when the unshelving command is initiated by an owner of the archived files, and the archived files are preserved on the version control system when unshelving command is initiated by a non-owner of the archived files.
Dependencies are inferred from the claim text.