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.
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.
Read access to the current directory
Information gathered about the state of CM
High for at least one CM tool; the reference CM tool will be CVS
Once per repository
Table 4-6. Normal Course of Action
User Actions | System Actions |
Tool is invoked | checks 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 |
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.
Read/write access to the current directory
The presence of the given CM tool in the directory
The file has been added to configuration management
High for at least one CM tool; the reference CM tool will be CVS
High; once per submitted issue
Table 4-7. Normal Course of Action
User Actions | System Actions |
Tool is invoked with a filename | checks 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) |
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.
Read/write access to the current directory
The presence of the given CM tool in the directory
The requested changed file has been committedto configuration management
High for at least one CM tool; the reference CM tool will be CVS
High; once per change to a submitted issue
Table 4-8. Normal Course of Action
User Actions | System Actions |
Tool is invoked with a filename | checks 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) |
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.
Read/write access to the current directory
The presence of the given CM tool in the directory
The requested changed file has been deleted from the disk, and removed from configuration management
High for at least one CM tool; the reference CM tool will be CVS
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.
Table 4-9. Normal Course of Action
User Actions | System Actions |
Tool is invoked with a filename | checks 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 |
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.
Read/write access to the repository directory tree
The presence of the given CM tool in the directory
The files are synchronized with the main repository via CM.
High for at least one CM tool; the reference CM tool will be CVS
High; the repositories are synchronized on a regular basis, and can be automated to resynch very frequently indeed (such as once per file request).
Table 4-10. Normal Course of Action
User Actions | System Actions |
Tool is invoked with a filename | checks 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) |
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.