what is svn? and how to use it with project?
Matthew Barrera
I don't know about svn. What is svn? My friend told me to use Assembla, it's just a repository? Or a svn too?
If I use an svn client, such as AnkhSVN, where do I store my projects? In AnkhSVN? or Assembla? If store in Assembla, what must I do to connect it to AnkhSVN?
25 Answers
svn is short for subversion, which is a type of version control system. Version control is a huge topic -- in a nutshell, these are just some of the benefits you get from using version control:
- Track changes to your code base (i.e. who changed what), and roll back to previous revisions
- Collaborate with your teammates by having the version control system merge your changes with changes made by other developers on the same file(s)
- Create branches of your code, allowing you to maintain different versions of your project in parallel
You can use subversion directly from the command line, but there are also GUIs and IDE plugins that make subversion integration easier. AnkhSVN, for example, is a subversion client that integrates with Visual Studio.
I recommend you do some reading on version control, then follow a few subversion tutorials to get you started:
Read (at least) the preface to Version Control with Subversion, which is the definitive guide to SVN. Better yet, read through the introduction and the first chapter. Hopefully it will answer all your questions.
So SVN is a versioning and revision control system. Basically it allows a team to manage sharing a code base.
Consider the world without such a system. You have two programmers A and B. And two files C and D. Programmer A alters file C. Then programmer B alters files C. If B altered the version of the file before programmers A edit you have problems. Now you need to sync the two. How do you manage this? This is what SVN does.
Additionally its nice to be able to say I made these 10 edits a year ago. Lets roll back to that version of the code base.
Its a complex subject but basically SVN, git, CVS, clearcase, etc are all version control system that solve these problems. Here are some wiki articles to read.
SVN is simply a method used to store and access a repository. Things such as Assembla and AnkhSVN are just clients used to manage a repository (I believe Assembla will also host a server for your files). SVN is merely a version tracker. It allows you to send file changes to an archive that tracks who changed what in each version of the files. It allows you to easily undo the changes that someone made while keeping other changes in place.
I have never used AnkhSVN, but it should be possible to connect to an Assembla repository by using AnkhSVN.
1SVN is SubVersion tool for Version control. Its an open source written in Java.
- Software developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation.