How to: Create a local SVN on Ubuntu

Categories: Howto, Linux, Ubuntu

Often times I get into a situation where I mess up with my development (of personal projects). Though I use github for personal projects yet sometimes it is convenient to have a local SVN for all silly works (like .vimrc, .bashrc, etc…). After a lot of procrastination, I decided to set a local svn repo for all my silly “not-to-be-published” work.

Points to note
  • First, understand that I am working on my personal box & so I got complete permission to violate šŸ˜‰ the value of a sudoer account.
  • Second, I am kinda cli person. Except for the joys of multi-window vim sessions I don’t want an overhead of apache et al. So I did not invest time in configuring my apache for my svn.
  • Third, I am gonna access my SVN as a “file:///” & not as “http://” or “svn:///”

And, so here we go…

Install Subversion Package

Don’t expect an explanation here šŸ˜‰

$> sudo apt-get install subversion subversion-tools

Repository directory

Create a directory to hold all your repositories. Since I own my box, to avoid confusion I created the repo directory as a peer to my user account. Another reason is this will ensure that my guest accounts (i.e., family et al) don’t get access to my SVN (by the virtue of they not being a sudoer).

$> sudo mkdir /home/svn

Create repo

Create a new, empty repository at the path provided. Suppose, I want a repository for all my silly test works (like a super silly shell script to dump the current ip), I shall call it ‘test.’ Then:

$> sudo svnadmin create /home/svn/test
$> ls -l /home/svn/
total 4
drwxr-xr-x 6 root root 4096 2014-09-18 18:32 test

This has created an empty repository under /home/svn/test.

Import data

Importing data implies that some data is available somewhere already. In my case, yes I do have my silly scripts to import and hence I change directory into where I have stored the scripts and import them as below:

$> cd ~/sillyscripts
$> sudo svn import . file:///home/svn/test/trunk -m "Initial import"

Now the entire sub-tree under sillyscripts have been imported into test.


Final point to remember is that the original location from where the data was imported (i.e., ~/sillyscripts) is _NOT_ under svn. We need to freshly checkout the repo.

$> cd ~/svnprojects/
$> svn co file:///home/svn/test
$> cd ~/svnprojects/test
$> svn info
Path: .
URL: file:///home/svn/test
Repository Root: file:///home/svn/test
Repository UUID: 4158fc24-64e9-4705-b124-8f2b88018be7
Revision: 1
Node Kind: directory
Schedule: normal
Last Changed Author: root
Last Changed Rev: 1
Last Changed Date: 2014-09-18 19:00:02 +0300 (Thu, 18 Sep 2014)

Voila! Now play with your data & have fun šŸ™‚



    Leave a Reply

    Your email address will not be published.