Software Configuration Management
After an editor and a compiler, version control is the most crucial tool for software development
Version Control (e.g., Git) | Shared Directory |
---|---|
Tracks history of every change | Only a snapshot at one moment |
Shows authorship of each change | No authorship information |
Allows reverting to earlier versions | No rollback, must unpack copies |
Supports branching and merging | Single linear copy only |
Enables collaboration with multiple users | Must manually share updated files |
Detects and resolves conflicts | Silently overwrites changes |
Stores differences efficiently (deltas) | Full copy of every file for every "version" |
Integrates with automation | No built-in automation support |
Provides commit messages for context | No explanation of changes |
Ensures integrity with hashes | Integrity depends on archive tool |
Each change can be signed/verified | Only the entire archive can be signed/verified |
Treats development as iterative | Treats development as static |
while
statement isgit
SVN | Git |
---|---|
svn checkout url | git clone url (git checkout branch) |
svn update | git pull |
svn commit -m "Add feature" | git commit -am "Add feature"; git push |
svn status | git status |
svn revert path | git reset –hard path |
svn add file; svn rm file; svn mv file | git add file; git rm file; git mv file |