2. About Me
• Blog (http://tech.wowkhmer.com)
• Twitter (http://twitter.com/samnangchhun)
• Yoolk Inc. (http://www.yoolk.com)
• Rails Developer
• .NET Developer
4. What is Version Control?
“Revision control (also know as version
control, source control or (source) code
management (SCM)) is the management
of changes to documents, programs, and
other information stored as computer
files.” (source: Wikipedia:RevisionControl)
5. No Version Cotrol
• Which version works?
• Which versions have
bug/feature X?
• What’s the different
between certain
versions?
6. No Version Control (Cont.)
Banking System
David & Bob working on the same project • How to combine these
two version into one
Working on User Working on Loan
Management Management
working program?
• Who is responsible on
keeping the latest
David Bob version?
The latest working version?
8. Types of Version Control
Centralized
• Client-Server System
• Repository stored on server
Decentralized
• Full decentralized, no server
• Each user has a copy of the full repository
10. Subversion (SVN)
• Cross Platform / Open Source / Free.
• Central repository.
• Atomic commit.
• Availability of free client software / Plugin
for most known IDEs.
• Most of Open source hosting sites support
it. (e.g. codeplex, google code, and etc…)
11. The Working Cycle
Subversion
Repository
David Bob
Working Copy Working Copy
Schema Access Method
file:// Direct repository access on local or network drive.
http:// Access via WebDAV protocol to Subversion-aware Apache server.
https:// Same as http://, but with SSL encryption.
svn:// Unauthenticated TCP/IP access via custom protocol to a svnserve server.
svn+ssh:// authenticated, encrypted TCP/IP access via custom protocol to a svnserve server.
13. Basic SVN Terminology
• Repository (repo): The database storing the
files.
• Working Copy: Your local directory of files,
where you make changes.
• Revision: What version a file is on (v1, v2, v3,
etc.).
• Check out: Download a file from the repo.
• Check in: Upload a file to the repository (if it has
changed). The file gets a new revision number,
and people can “check out” the latest one.
14. Basic SVN Terminology
(Cont.)
• Update: Synchronize your files with the latest
from the repository. This lets you grab the latest
revisions of all files.
• Head: The latest revision in the repo.
• Changelog/History: A list of changes made to a
file since it was created.
• Revert: Throw away your local changes and
reload the latest version from the repository.
15. Basic tools for SVN
• Client
– TortoiseSVN
– VisualSVN (commercial)
– AnkhSVN
• Server
– VisualSVN Server
17. Best Practices
• Comment, Comment, Comment
• Update and TEST before Commit
• Work from your own local copy
• Commit small autonomous changes
• Validate the files you are committing, you
actually changed
• Keep in touch with the repository.
• Watch for Conflicts
• Always group your check-in logically.
18. Resources
A Visual Guide to Version Control.
Source control how to.
SVN best practice.
5 SVN best practices.
OSCON: Subversion Best Practices.
Version control with subversion.