Title: Introduction to Version Control
1Introduction to Version Control
Based on material at http//svnbook.red-bean.com/
2The stages of developing a software application
- Requirements Analysis
- High-level Design
- Plan
- Low-level Design
- Implementation
- Unit Test
- Integration
- System Test
- Deploy
- Maintain
3In many cases, multiple projects run concurrently
- New features are typically being added to the
next version - While at the same time, defects need to be
corrected in existing releases
4On a single project, a team of software engineers
work together toward a release
- All team members work on the same code and
develop their respective parts - An engineer may be responsible for an entire
class - Or just a few methods within a particular class
5Files have to be shared among developers on a
team project
- Shared files can be kept in some type of
Repository where they can be accessed and worked
on by multiple individuals
Harry and Sally get their own respective Working
Copies of the Master File in the Repository
Image http//svnbook.red-bean.com/
6This can lead to big problems
Adds some method
Modifies some other method
Image http//svnbook.red-bean.com/
7The problem to avoid
Harrys changes are still held locally
Image http//svnbook.red-bean.com/
8Harrys changes are lost
Image http//svnbook.red-bean.com/
9The Lock-Modify-Unlock solution
Microsoft Visual SourceSafe follows this model
Sally must wait until Harry releases the lock
Image http//svnbook.red-bean.com/
10Lock-Modify-Unlock only allows a single user to
edit the file at a time
Image http//svnbook.red-bean.com/
11Lock-Modify-Unlock has its own drawbacks
- Harry has to remember to release his lock before
Sally (or anyone else) can acquire the lock in
order to edit - Sally has to wait for Harry to finish before
editing - Harry might be adding some new methods
- Sally just wants to add a few comments to an
existing method
12The Copy-Modify-Merge Solution
Image http//svnbook.red-bean.com/
13The Repository recognizes conflicts
Harry is prevented from writing
Image http//svnbook.red-bean.com/
14The Repository allows versions of the file to be
compared for differences
Image http//svnbook.red-bean.com/
15The Repository keeps both users synchronized
Image http//svnbook.red-bean.com/
16Copy-Modify-Merge is actually very easy to use
and manage
- Users can work in parallel
- Most of the time, concurrent changes dont
overlap - People generally dont edit exactly the same code
simultaneously - Amount of time spent resolving conflicts is
nearly always less than the time that would be
spent waiting for a lock to be released
17Is Lock-Modify-Unlock ever needed?
- When two or more people need to work on the same
file, the simultaneous changes may not be
mergable in all cases - MS Word documents
- Image documents
- EA design documents
18The Repository can also manage and track
differences between parallel revisions of a
document
- Typically, a software product will undergo
revisions (2.0, 2.1, 3.0) while the original
version continues to be maintained
Image http//svnbook.red-bean.com/
19Subversion is an open-source version control
system that is available for many platforms
- Windows
- Mac
- Linux
- Many current open-source projects (like Eclipse)
use Subversion to maintain source code control - http//subversion.tigris.org/
20Subversion in SE2030
- The Subversion Repository for SE2030 is installed
on emerald.msoe.edu a Linux server accessible
via the MSOE network - In order to access the Repository, you need a
Subversion Client that can read and write files
to and from the Repository on the server
21The TortoiseSVN Subversion Client
- TortoiseSVN is a SourceForge open-source client
application for the Windows platform - There are similar client applications for Mac
and Linux - Mac - http//scplugin.tigris.org/
- Linux (KDE) - http//kdesvn.alwins-world.de/
- Wikipedia comparison of various clients is at
http//en.wikipedia.org/wiki/Comparison_of_Subvers
ion_clients
For more info, see http//tortoisesvn.net/
22Homework
- Install TortoiseSVN on your PC needed for lab
this week - http//emerald.msoe.edu/resources/doku.php?idcour
sesse-2030installing_tortoisesvn - Read more about Version Control
- http//emerald.msoe.edu/resources/doku.php?idcour
sesse-2030version_control
Links are also on course web page