2/27 - Version Control Fundamentals Flashcards
1
Q
Version control is needed for
A
- Sharing workflow
- Parallel maintenance
- Increasing speed of development
- Connectivity
- Trust
- Integrity
- Transparency
2
Q
Classical Version Control: RCS/SCCS
A
- Multiple version of files could be stored
- Versions tracked for each file separately
- Revision numbers automatically assigned
- You could lock a file to prevent changes
- Versions were tracked using diffs
- Current version available the fastest
- Branching was supported (but wasn’t efficient)
- Merging was possible
3
Q
Cons of RCS/SCCS
A
- Tracks only one file at a time
- No way to know if two files are the same
- Support for adding/deleting files is weak
- Renaming files would confuse the version control completely
- Branching and Remerging was confusing and difficult
- 1 at a time locking mechanism is annoying
4
Q
Centralized Version Control
A
- Single server that contains all the versioned files
* Clients check out/in files from that central place
5
Q
Examples of Centralized Version Control
A
CVS, SVN
6
Q
Pros of Centralized Version Control
A
- Everyone knows what everyone else is doing
* Admins have more control
7
Q
Cons of Centralized Version Control
A
- Single point of failure
- Cannot work offline
- Slow
- Does not scale
- Can’t manage complex trust relationships
- Easier to lose data
- Tangled instead of atomic commits
8
Q
Distributed Version Control
A
- Clients fully mirror the repo
* Every clone is a backup of all the data
9
Q
Pros of Distributed Version Control
A
- Fast, works, offline, scales
* Better for collaboration
10
Q
Examples of Distributed Version Control
A
Git, Mercurial, Bazaar