Feature CM

Description and Priority

The system should be able to identify and use the same configuration management tools which are being used for the directory holding the repository. It should invoke these tools to resynchronize the local repository with the "master" repository, to add new files, to commit changes, and to remove files when appropriate.

Stimulus/Response Sequences

CM.UC.IDENTIFY

Description

The system checks in the current directory (the directory it's invoked from) and looks for evidence of an existing configuration management system. It identifies the CM or lack of same and (if interactive) displays that information to the user. This can be invoked by the command yaktrack cm check-presence, but is normally not invoked by the user.

Requires

Read access to the current directory

Ensures

Information gathered about the state of CM

Priority

High for at least one CM tool; the reference CM tool will be CVS

Frequency

Once per repository

Normal Course

Table 4-6. Normal Course of Action

User ActionsSystem Actions
Tool is invokedchecks through a list of possible detectors
 Runs each detector on the current directory to check for success
 If a match is found, returns that ID
 If a match is not found, returns an error

CM.UC.ADD

Description

The system checks for the presence of the given tool in the directory in question, then adds the given file to the CM system. This can be accomplished by the command yaktrack cm add [filename], but this is normally done by the system, not the end user.

Requires

Read/write access to the current directory

The presence of the given CM tool in the directory

Ensures

The file has been added to configuration management

Priority

High for at least one CM tool; the reference CM tool will be CVS

Frequency

High; once per submitted issue

Normal Course

Table 4-7. Normal Course of Action

User ActionsSystem Actions
Tool is invoked with a filenamechecks for presence of the given tool
 Checks for the presence of the file in question
 Adds the file to CM, if the file was found (if not, display feedback)
 Show feedback for the given file added to CM (capturing output of CM tool)

CM.UC.COMMIT

Description

The system commits changes for a given file through an external configuration management system. This can be accomplished by the command yaktrack cm commit [filename], but this is normally done by the system, not the end user.

Requires

Read/write access to the current directory

The presence of the given CM tool in the directory

Ensures

The requested changed file has been committedto configuration management

Priority

High for at least one CM tool; the reference CM tool will be CVS

Frequency

High; once per change to a submitted issue

Normal Course

Table 4-8. Normal Course of Action

User ActionsSystem Actions
Tool is invoked with a filenamechecks for presence of the given CM tool
 Checks for the presence of the file in question
 Checks to make sure the file has been added to configuration management
 Adds the file to configuration management, if it has not been added
 Commits the new file to CM, if the file was found (if not, display feedback)
 Show feedback for the given file committed to CM (capturing output of CM tool)

CM.UC.DELETE

Description

The system deletes a given file from the disk, then removes it from configuration management. This can be accomplished by the command yaktrack cm delete [filename], but this is normally done by the system, not the end user.

Requires

Read/write access to the current directory

The presence of the given CM tool in the directory

Ensures

The requested changed file has been deleted from the disk, and removed from configuration management

Priority

High for at least one CM tool; the reference CM tool will be CVS

Frequency

Low; once per deletion of a logged issue; since issues will very rarely be deleted (old issues no longer in use will have degraded statuses or show links to new versions of the issues) this is not likely to come up in practice.

Normal Course

Table 4-9. Normal Course of Action

User ActionsSystem Actions
Tool is invoked with a filenamechecks for presence of the given CM tool
 Checks for the presence of the file in question
 Deletes the file from disk
 Removes the file from configuration management
 Checks to ensure that files are removed
 Show feedback for the given file removed from CM

CM.UC.UPDATE

Description

The system updates the repository, resynchronizing it to the "home" repository through configuration management. This can be accomplished by the command yaktrack cm update, but this is normally done by the system, not the end user.

Requires

Read/write access to the repository directory tree

The presence of the given CM tool in the directory

Ensures

The files are synchronized with the main repository via CM.

Priority

High for at least one CM tool; the reference CM tool will be CVS

Frequency

High; the repositories are synchronized on a regular basis, and can be automated to resynch very frequently indeed (such as once per file request).

Normal Course

Table 4-10. Normal Course of Action

User ActionsSystem Actions
Tool is invoked with a filenamechecks for presence of the given CM tool
 Updates the entire tree (for CVS, this is easy as the CM tool does the work; for file-by-file CM systems, this must do a recursive update on each file in the tree)
 Checks to ensure that files are updated
 Show feedback for the update (usually the results of the CM tool)

Functional Requirements

CM.IDENTIFY.FR1. The system should create tools for identifying whether a given CM package is in use on a given directory. Each CM tool should have a "presence_detected_in_path" feature which tells whether the given CM package is in effect.

CM.ADD.FR1. The system should be able to check for the presence of a file.

CM.ADD.FR2. The system should add files to a configuration management system, either through a shell script or other means

CM.ADD.FR3. The system should be able to determine the result of an add request, and store that information in the CM tool as a feature (feature last_add_result)

CM.COMMIT.FR1. The system should commit a file to configuration management.

CM.COMMIT.FR2. The system should be able to determine if the file has been added to configuration management

CM.COMMIT.FR3. The system should commit changes to a file to configuration management

CM.COMMIT.FR4. The system should be able to determine the result of a commit request

CM.DELETE.FR1. The system should be able to delete a file from disk

CM.DELETE.FR2. The system should be able to remove a file from configuration management

CM.DELETE.FR3. The system should be able to check that a file is no longer under configuration management

CM.UPDATE.FR1. The system should be able to update all files in the repository from the remote CM repository.