Subversion

advertisement
Subversion (SVN) Tutorial for CS421
Dan Fleck
Spring 2010
What is version control?

Version management allows you to control and monitor
changes to files







What changes were made?
Revert to pervious versions
When were changes made
What code was present in release 2.7?
Earliest tools were around 1972 (SCCS)
Older tools – RCS, CVS, Microsoft Source Safe, PVCS
Version Manager, etc…
Current tools – Subversion, Mercurial, Git, Bazaar
We will use subversion

Why?

Because it’s popular
It’s well supported





IDEs - Netbeans, Eclipse
Numerous GUI tools
Works with xp-dev.com (which we’ll use)
I know little about the other recent tools  - truth hurts


Big difference is SVN has a single central repository
Git/Mercurial are distributed (more peer-to-peer)
http://git.or.cz/gitwiki/GitSvnComparsion (if you care)
subversion concepts

checkout – get a local copy of the files


add – add a new file into the repository


I’ve made changes, how do I send them to the group?
update – update all files with latest changes


I created a new file and want to check it in
commit – send locally modified files to the repository


I have no files yet, how do I get them?
Other people made changes, how do I get them?
tag / branch – label a “release”

I want to “turn in” a set of files
Creating a new repository

Command Line:




GUI Mac OSX SCPlugin


Open command prompt
Go to a directory where you want your files to be stored
svn checkout http://svn.xp-dev.com/svn/<<your project>>/
Adds commands to right-click menu in Finder
GUI Windows Tortoise SVN

Adds commands to right-click menu in Explorer
Creating a new repository - Mac SCPlugin
Create Repository – Mac OSX
Create a repository using Tortoise SVN

I need a tool that allows Windows screenshots with a
timer.

Open Windows Explorer
Select a directory where you want your repository
Right-click and select “SVN Checkout…”


Add a file into repository

Copy a new file into the “trunk” directory

Tell SVN to include the file as part of the repository

Command line


GUI



svn add yourFile.ppt
Windows: right click choose: TortoiseSVN->Add
Mac OSX: right click choose:More->Subversion->Add
This does NOT upload the file yet! The commit command
will upload all new files and changed files
Commit changes

Modify a file contained in your repository

Command Line:


svn commit -m ’Added a new sequence diagram.’
GUI



Windows: right click choose: TortoiseSVN->commit
Mac OSX: right click choose:More->Subversion->commit
Update the message with what was changed in the file. This should be
a meaningful statement someone can look at to determine what was
changed
Update

Update gets all new changes from the repository.



svn update
GUI Users: you should get it by now
What happens if there is a conflict?


User A has version 3 of the file, modifies it, commits it creating version 4.
User B has version 3 of the file, modifies it, commits it




CONFLICT – User B’s copy of the file was out of date. User B must merge their
changes into Version 4
For text files (like source code) SVN can help do this in an automated
way
For binary files SVN cannot help… must be done manually
Lesson: Always ensure you have the latest version (update
frequently). If multiple people are editing the same file you could
have problems
Subversion Directories



trunk – main working files
branches – place to put other copies people are working
on off the main trunk
tags – place to put a labeled “release”.You will turn in
your project by tagging a version as “TurnInOne”

Command Line:



go to the directory of your project
svn copy trunk branches/TurnInOne
Windows GUI



right-click on “trunk”
select TortoiseSVN->Branch/Tag
chanage “To URL” to http://svn.xp-dev.com/svn/<<your
project>>/branches/TurnInOne
Subversion Tags/Branchs


Tags/Branches really work as copying the repository to a new
directory (url)
You will turn in your project by tagging versions (example:
“TurnInOne”)

Command Line:



Windows GUI




go to the directory of your project
svn copy trunk branches/TurnInOne
right-click on “trunk”
select TortoiseSVN->Branch/Tag
chanage “To URL” to http://svn.xp-dev.com/svn/<<your
project>>/branches/TurnInOne
Mac OSX SCPlugin GUI

Does not seem to work for me on xp-dev.com (use command line)
Summary




Create the repository by “svn checkout”
Copy your documents into “trunk” directory
Use “svn add” to mark files to repository
Use “svn commit” to send the files to the repository

Modify files, “svn commit” as needed until your
deliverable is complete

Update turn in sheet (in repository)
svn commit (don’t forget the final commit!)
svn copy trunk tags/TurnInXYZ


Other notes

log command shows the log of changes to a file

diff command can shows changes between revisions (for
text files only)

These commands are all built-in to IDEs: eclipse, netbeans
Download