SVN on MacOS X

So you want to get Subversion running on your mac, complete with nifty finder integration?  Good, welcome to the wonderful world of revision control.

This little ditty will assume that you have an SVN repository to connect to already, and all you need is the client-side tools.  If this is not the case, then move on.

First, what exactly is version control?

That is a valid question, and one that I get pretty often when I am talking about CVS, SVN or Arch.  In short revision control breaks down like this:

  1. A central location to house your source code.  This could be HTML and PHP files, or C++.
  2. Version control allows you to maintain multiple versions of a file.  Each of these is a "revision".  In essence you change a "p" to a "q" in your file and upload that to your server, your revision control system will identify that there is a change and create a new "revision".  This does not destroy your previous file, it merely adds a new "version" of that file.
  3. Version Control allows you to fall back to an older version of a file if needed.  In our case we actually wanted that "p" to be a "p", not a "q".  We are able to revert to that older file, but also have the newer file that might contain other bits that were changed that are still valid, at our fingertips.

Go that?  Excellent, moving on.

Working with Version Control

So now that we have established what version control is, how do we use it?  For basic operation there are only a few command we really need to know:

  1. co: check out, this downloads the current or highest revision from the repository to our local machine.
  2. diff: this checks our local file(s) and those on the remote server for differences.
  3. add: if we have created a new file that is not on the server, you use add to tell SVN to upload it to the remote server on the next commit.
  4. delete: we almost never use delete with SVN, the entire idea of revision control is to never lose anything.  That being said there are times that this command is useful.  Files marked for delete are removed at the next commit.
  5. commit: we use commit when you are ready to send your local changes to the remote server, creating a new revision.

There are a number of other commands, such as mkdir (create a new directory) and blame (assign blame to someone for a screwup... one of my favorites.) but those outlined above are the most used.

Setting SVN up on your Mac.

The easiest way to install SVN is by browsing to the binary downloads page and scrolling down until you find MacOS X.  You will want the second link, the one that does not rely on Fink.  Grab the 1.2.1 (or whatever is the newest) binary from the Metissian page and install it.

After the installer has run its course you now have a running SVN client on your mac.  Next we have to decide how we are going to access that SVN client.

There are two ways to use SVN on your MacOS X box, either through the terminal or through a third party GUI based solution.  I will not cover the terminal in depth since for most of us a Finder integrated solution is superior.  But for the sake of completeness here are a few brief notes.

SVN via Terminal

First of course we need to launch the Terminal application located at /Applications/Utilities/Termimal.app.  Once the terminal is running, we need to choose a location for our files downloaded from the remote server.

Let's say we are going to use /Users/yourname/checkouts/.  First we need to navigate to Users/yourname/ and create the checkouts directory:

MyMac:~ yourname$ cd /Users/yourname/
MyMac:~ yourname$ mkdir checkouts

You should now be able to navigate to your users folder via the Finder and see the newly created checkouts folder.  Now we hop back to the terminal and move into that directory and call SVN for the first time:

MyMac:~ yourname$ cd /checkouts/
MyMac:~ yourname$ svn co svn.theremoteserver.com/wooga

Congratulations, you have just performed your first SVN command.  Anytime you interface with SVN via the terminal you begin with svn, then you tell svn what you want to do, in this case we said co and we know from earlier that this means Check Out.  So if all went well you should now have a folder inside of checkouts called wooga and inside this folder we have our files, ready and waiting for editing.

You can now edit those files with any app you wish.  Once you have saved your changes locally all you need to do is go back to the Terminal and navigate to /Users/username/checkouts/wooga and enter:

MyMac:~ yourname$ svn diff
MyMac:~ yourname$ svn commit

Running diff is not required, but it is a good idea to make sure that you are aware of all the files you have changed.  The Terminal window should show you SVN adding (A), updating (U) or deleting (D) files, based on what changes you have made locally.

And that is it for the Terminal.  More information can be found at Subversion Forum.

SVN via The Finder

This is, for most of us, the most natural method of interacting with SVN on our Macs.  By downloading and installing scplugin from tigris, we can fully integrate SVN into the Finder.

After downloading and installing the plugin, there will now be a new contextual menu when you right-click/control-click in the Finder labeled Subversion.  If you open that submenu you will see all the commands you have at your disposal.

To replicate our steps above via the Finder we would simply:

  1. open a new finder window
  2. navigate to our user folder
  3. right-click/control-click and select New Folder from the contextual menu, and name it checkouts
  4. navigate to checkouts, and right-click/control-click and select Checkout from the Subversion contextual menu.
  5. You will be prompted to specify the URI of the repository, enter it and make sure that the "Checkout to local path" is correct
  6. click Checkout, sit back and relax.

And that is all there is to Checking out via scplugin and the Finder.  Next you would open and edit files, and then go back to the Finder to run Diff and Commit which are both found via the Subversion contextual menu.

That is it really.  If you install scplugin you will notice that files that you are interacting with will have green checkmarks on them, or blue pluses, or red exclamation points.  This is normal.  The green checkmark means that you local copy is in sync with the remote copy; the blue plus means the file has been added and is ready for Commit and the red exclamation point means that the local copy and the remote copy are out of sync, most likely due to changes you have made locally.

 

Post a job. Find one. authenticjobs.com

 

ApacheCon Europe Final Day

I am now sitting in the terminal in Detroit waiting for my connecting flight to Lexington.  I have been here since 5:30 est and my plane doesn't leave until 9:09 est... suckage.  Add to that my body thinks it is actuall 1:55 in the morning (Stuttgart Time) and you can see that I am just having loads of fun.  There will be a proper ApacheCon Europe wrap-up post tomorrow, or Tuesday... see you all then.

Well it is the final day of ApacheCon Europe, and I am sitting in the final keynote which is covering the state of patents in Europe.

The convention has been extraordinary. I can't adequately explain how blessed I feel for being able to be with these people, and to hear what they have to say.

So I am sure you are wondering how my talk went, since it was this morning. It didn't go very well.  Apparently none of the talks were well attended, the Ruby on Rails talk only had 30 people... that is just scary. I had 8, including 3 other speakers who felt sorry for me, and the chair.

Add to that that without questions from the audience I burned through my material in 35 minutes, leaving 15 minutes for questions, which by and large did not come. Just fun.

Well that is all for now, this talk is very good, and I don't want to miss any of it.

 

Sorry for the downtime

Seems like things are back to normal.  The "problem" was kinda strange, and I am not sure how it was possible honestly.

But anywhoo, things should be good again.

 

Partial DVD Collection

I was checking up on Michael this evening and found that he had posted a shot of his DVD collection via Delicious Library.  I thought that he had a great idea so here is my partial library.

Library

 

Ein Tag im Park, Stuttgart Art

touring Stuttgart

Today Rich and I took sometime off from the Convention and toured a bit of Stuttgart.  The original plan was to hop over to a different country, we were aiming at Poland, and later Switzerland.  Unfortunately while within reach (a little over 2 hours by train) the price stopped us.  $110 Euros to Zurich is just too much to deal with unfortunately.

A journey in photos

You can find photo-documentation of our treck around town over on my Flickr page.  Today's weather was... well miraculous, considering yesterday was so horrid.  High temperatures and lots of humidity made for a miserable day, contrast that with today which has almost no humidity, cooler temperatures and a wonderful light breeze.  Stuttgart is beautiful, and today was the perfect day to see her.

Interesting developments

Strangely enough it looks as though I might have found a place that I can help within the Apache Software Foundation.  They are just now starting to explore the seedy world of marketing and advertising and that is something I have a bit of expertise in.  I hope to be added to the team that is wrestling with this soon.

Well back to the hackathon, the actual conference starts tomorrow and I speak on Friday so things are moving along nicely.

 

Sachen I haben in Deutschland erlernt

I have learned a couple of very important facts already this week.

  1. Fact number 1: Checking the apache.org site out of SVN takes a looooong time.
  2. Fact number 2: People are jerks everywhere.  While having CurryWurst and Orangina at the Cafe, some pretentious German 20-somethings began making fun of my quite noticeable disease.
  3. Fact Number 3: I finally identified why I hate coming to Europe.  Once here I never want to leave.  Everything about Europe suits me better than America.  It is very distressing.

Well that is it for now, I need to get back to the hackathon, be sure to check out the Flickr Tag Page for ApacheCon Europe 2005.

 

Sitzen, Aufwartung, wünschend


Update 2: Stuttgart

Well I am updating this from my Hotel room in the Maritam in Downtown Stuttgart.  The flight over the atlantic was uneventful and a joy, if you factor out the normal "Chris decends from 30,000 feet, suffers excrutiating ear pain and is deaf for 3 - 4 hours" that is.

Stuttgart is really a lovely city and I look forwarrd to exploring a bit more once I have had some shut-eye.  I am not able to sleep on planes, so I have almost been up for 24 hours straight.  Must sleep.  Catch you Cats and Kittens later.

Update 1: Atlanta

I am sitting in a restaurant in the Atlanta International airport, hoping that the waitress actually decides...  Oh! she just did.  Well I have ordered a cheeseburger and a drink, lets see if it actually gets here before my flight.

The flight from Lexington was... interesting.  Everytime they deployed the landing gear it sounded as though we were loosing a part of the plane that we really would rather not lose.  Just scary.

We had quite a lot of turbulence along the way, thanks to that "weather" that you can see in my Flickr photostream.  I don't actually have internet access here that I can find, so I will have to post this once I either get to my destination, or there is a miracle of biblical proportions and we have WiFi on the plane.

Well I will update again later.

Previously: Lexington

The title says it all I think.  I am sitting in the waiting lounge at my gate whiling away the time until my flight arrives.

a little weather

Some flights that Delta flys internationally carry WiFi, so I am hoping that I will be able to blog from 30k at some point on this trip.

Oh and what is there to do when you are waiting for a flight in Lexington, KY?  Why a bourbon bar of course!

bourbon bar

I will update this post as I can with my progress.  Have a good one, and I can't wait to see everyone in Stuttgart.  The one thing I am not happy about is the fact that I am leaving my pregnant wife for this week.  Know that I love you Heather, and that I am counting the days until I am home again.

 

Some Safari Surprises

As evidenced by the comments below this is apparently a third party product.  What mystifies me is how it came to be on my machine, since I did not download and install it.  Who knows.  If you are a Safari user who would like this addition hop over to here and download it.

I updated my home machine to 10.4.2 tonight and after launching Safari I noticed something odd:

web dev additions Read the rest »

 

JoshuaInk, how we miss you

John Oxton

This morning while catching up on my cadre of blogs I discovered that John Oxton has left our midst.

John is an incredible designer and a hella nice guy, and we will miss his humour, design sensibilities and foul language very much.  I hope that you can find the peace and quiet you are seaking, and if there is any place a man can find that, it is in the beauty of the Cottswalds.

Stay well John, and we wait for your return.

 

CJD Notepad: Version 1.5.5.2

Just a quick update for CJD Notepad.  You can find full notes on Notepads official home, there is one big addition and two smaller ones.

Why I love Open Source Software

Everyone give a big round of applause to http://economysizegeek.com/ for contributing the code to get the bookmarklets going.  Very much appreciated.

Go on and download it and be amazed!

Speaking

Buy my book!

Blog Design Solutions