Start with nothing and create a finished product with no existing code, design, or previous system.
Start with an existing project/environment and create a finished product with existing code, design, or previous system
Changes to an existing system
Type of Maintenance | Description |
---|---|
Corrective | Fix bugs/problems |
Adaptive | Change to fit new environment (API, compiler) |
Perfective | Improve performance or maintainability |
Preventive | Detect and correct latent problems before they become problems |
Software Evolution = Software Development + Software Maintenance
Law I: Continuing Change
Law II: Increasing Complexity
Law III: Self Regulation
Law IV: Conservation of Organisational Stability
Law V: Conservation of Familiarity
Law VI: Continuing Growth
Law VII: Declining Quality
Law VIII: Feedback System
Command | Description |
---|---|
sccs create <file> |
Initialize SCCS control for <file> (creates SCCS/s.<file> ) |
sccs edit <file> |
Check out <file> for editing (exclusive lock) |
sccs delta <file> |
Check in the file (creating a new delta/revision in SCCS/s.<file> ) |
sccs get <file> |
Retrieve a read-only copy of <file> (no lock) |
sccs diffs <file> |
Show differences between revisions |
prs SCCS/s.<file> |
Print the SCCS file history (log of changes, etc.) |
Command | Description |
---|---|
rcs -i <file> |
Initialize RCS control for <file> (creates RCS/<file>,v ) |
co -l <file> |
Check out <file> for editing (exclusive lock) |
ci <file> |
Check in <file> (creating a new revision in RCS/<file>,v ) |
co <file> |
Retrieve a read-only copy of <file> (no lock) |
rcsdiff [options] <file> |
Show differences between revisions of <file> |
rlog <file> |
Print information about the RCS file history (log of changes, etc) |
Command | Description |
---|---|
cvs init |
Initialize a CVS repository in the current directory |
cvs checkout <module> |
Check out <module> into a working directory |
cvs update |
Update local files with changes from the CVS repository |
cvs commit |
Commit local changes to the repository |
cvs diff |
Show differences between working copy and repository |
cvs log |
Print log messages for files |
Command | Description |
---|---|
svnadmin create <repo_path> |
Create an empty Subversion repository at <repo_path> |
svn checkout <repo_url> |
Check out a working copy from <repo_url> |
svn update |
Update working copy to the latest revision from the repository |
svn commit -m "message" |
Commit changes from the working copy to the repository |
svn diff |
Show differences between the working copy and the repository |
svn log |
Print log messages for files or directories |
Command | Description |
---|---|
git init |
Initialize a new Git repository in the current directory |
git clone <repo_url> |
Clone a repository from <repo_url> into a new directory |
git pull |
Retrieve and merge changes from the remote repository into the local one |
git add <file> |
Stage <file> for the next commit |
git commit -m "message" |
Commit staged changes with the message "message" |
git push |
Send local commits to the remote repository |
git diff |
Show differences between the working copy and the repository |
git log |
Print the log of commits, including messages |
SCCS | RCS | CVS | SVN | Git |
---|---|---|---|---|
sccs create <file> |
rcs -i <file> |
cvs init |
svnadmin create <repo_path> |
git init |
sccs edit <file> |
co -l <file> |
cvs checkout <module> |
svn checkout <repo_url> |
git clone <repo_url> |
sccs delta <file> |
ci <file> |
cvs commit |
svn commit -m "<msg>" |
git commit -m "<msg>" |
sccs get <file> |
co <file> |
cvs update |
svn update |
git pull |
sccs diffs <file> |
rcsdiff <file> |
cvs diff |
svn diff |
git diff |
prs SCCS/s.<file> |
rlog <file> |
cvs log |
svn log |
git log |
Mining Software Repositories