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