Command-line Subversion Practices

Goksel
goksel
Published in
2 min readMar 12, 2011

After using many SVN Clients on Windows/Unix/Linux Platforms, I realized that there is no need to use these 3rd party softwares. You can do anything you want using command-line. Lets go…

My defaults:

My Svn Repo : http://svn.geryit.com/geryitcom
Local Folder : ~/Sites/geryitcom
Path to be ignored : ~/Sites/geryitcom/_source

Checkout Repo

cd /Users/geryit/Library/WebServer/
svn co http://svn.geryit.net/geryitcom/
cd geryitcom

Update Repo

svn up

Define Files/Folders to be ignored

Create a path that will be ignored on commit

mkdir _source
svn ps svn:ignore _source .

If you have multiple items (path/file) to be ignored

Create “.ignore” file and add items to be ignored inside (We want to ignore “_source” and “cache” folders)

mkdir _source
mkdir cache
touch .ignore
open .ignore

Add this following lines into .ignore file and save file

_source
cache

Assign “.ignore” file as ignored items container

svn ps svn:ignore -F .ignore .

Add new files/folders to SVN

svn add . --force

Remove missing files with SVN

svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )

Commit Changes

svn ci -m "Your message"

How to fix svn: Directory ‘***’ is missing problem

Sometimes when you delete a local file/path and SVN Commit, you will see an SVN error like “svn: Directory ‘/Users/geryit/Library/WebServer/geryitcom/cache’ is missing”. Then you should :

svn delete cache --force

Create a shell script which does everything for you

Put the code below in a blank text file and save it as “svn_it” in /sbin folder. Now when you run svn_it, it will fire the commands below. You should “sudo chmod 775 /sbin/svn_it” if you face a permission problem

#!/bin/bash
svn up
svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )
svn add . --force
svn ci -m ""

--

--