Version Control and Unit
Version Control run process
Part I Version Control
► We hope to demonstrate how using version
control, can enable you and/or your team
to effectively manage change multiple
instances of code in a more ubiquitous
► What is version control?
► What is Subversion?
► How do I use it?
► Is version control for me?
Version Control Defined
Revision control (also known as Version
control) is the management of multiple
revisions of the same unit of information.
► Track who made what changes and when
Can even tell you why changes were made (Logs)
Changes made since last release of web site or
► See files as they looked a year ago
► View files or folders you have already deleted
Nothing is ever really deleted
► Let’s you track changes made today
► Provides an “Undo” button
Undo all changes made today
Your Own Sandbox
► Provides you with your own copy of files
► You control the changes made
to your files:
When to share your changes
When to incorporate others’ changes
► You can even isolate your work from yourself
► Manages different versions of the same
project at the same time
► Is a big database of files and folders
► Keeps a record of every major change or set
of changes made to a file or folder
► Enables sharing a project over a network
Version Control is Not…
►A substitute for communication within a
It often helps to facilitate communication
► The solution to all problems
It is only a tool
It is only as good as the user
How to do Version Control?
► Chose one of the many different version
control packages available
► Get buy-in from your team
► Decide upon a few practices
What info to log?
What goes into the version control system?
Directory structure layout
Version Control Systems
Free or Open Source: Proprietary:
► CVS ► Rational ClearCase
► Subversion ► MS Team
► CVSNT Foundation Server
► GNU Arch ► MS Visual
Compare for yourself
► Subversion is an open source application
for revision control. Also commonly referred
to as svn or SVN, Subversion is designed
specifically to be a modern replacement for
CVS and shares a number of the same key
► -- Wikipedia.org
► Check Out
Less Common Actions
► Command-line tools
► TortoiseSVN (Windows shell extension)
► Subclipse (plug-in for Eclipse)
► Svnx (for Mac)
► AnkhSVN (plug-in for MS VisualStudio.NET)
► SVN for Dreamweaver (GraFX Software Solutions)
► On and On and On
Why Unit Test?
Its tough to find good help these days.
Interdependencies grow as code base grows
Reducing time debugging means more time for
Part II Unit Testing
► systematic way of testing small portions
(‘units’) of code
► A way to avoid accidentally breaking
► Another way to make sure noobs don’t
► Ensure that vendors and outside
datasources don’t break stuff either!
What should I Unit Test?
Should validate expected functionality at the level
•small groups of collaborating classes
Important code should have unit tests
Tests should be written together with the code
Code should pass all unit tests before it can be
Unit Testing for All!
► SimpleTest Perl
► JUnit JAVA
► ApacheTest All of the above
► NUnit .NET
More to come!!