Who we are

We are the developers of Plastic SCM, a full version control stack (not a Git variant). We work on the strongest branching and merging you can find, and a core that doesn't cringe with huge binaries and repos. We also develop the GUIs, mergetools and everything needed to give you the full version control stack.

If you want to give it a try, download it from here.

We also code SemanticMerge, and the gmaster Git client.

A plugable Plastic SCM server

Saturday, December 11, 2010 Pablo Santos 2 Comments

Yesterday I got a SheevaPlug development kit and the first idea that came to my mind was “hey, let’s put a Plastic server here!” I’m involved in a small robotics project at the university (I’m an associate professor in Computer Science, although robotics is not my area) and we’re evaluating different alternatives to use as the robot brain. But yes, before moving some engines I wanted to check if it was possible to set it up as a Plastic server.

The look and feel


Well, I just took a few pictures of the “pluggable computer” today, close to my BlackBerry so you can see how small it is.



Start up


First thing is to go and plug the “thing”. Then it is supposed to start up and get an IP address from your router. That’s what I did, then went to my router configuration and checked that a new box was online!



Then I followed the instructions here to connect using ssh and log in. Cool!

Setting up


Follow the instructions step by step, all of them, including the one related to the time and date settings because otherwise you’ll end up in trouble when installing packages. It takes just a few seconds to go through all the commands. (I didn’t set the date at the beginning and jumped into mono installation and… ouch! Didn’t work!)



Installing mono


Again, really simple and well documented here. It’s an old 2.0 Mono (so I will try to come up with a newer 2.8 in the coming days, but just stayed with this one for the initial tests).

$ apt-get install mono-2.0-devel

And then don’t forget to install the following one too (otherwise you won’t have remoting and Plastic won’t work!)

$ apt-get install libmono-system-runtime2.0-cil



Copying Plastic


I just copied the Plastic SCM server binaries into /root/plastic/server and then run:

$ mono plasticd.exe –console

But… it didn’t work!

First thing I hit was that the SQLite libraries installed by default on the box were not ok to work with the Mono wrapper.

Ok, first things first. Here’s my db.conf to use a SQLite backend:


<DbConfig>
<ProviderName>sqlite</ProviderName>
<ConnectionString>Data Source={0};Pooling=true</ConnectionString>
</DbConfig>


Installing SQLite


First I got the package and then installed gcc and make

$ apt-get install wget
$ apt-get install gcc
$ apt-get install make
$ wget http://67.18.92.124/sqlite-autoconf-3070400.tar.gz

Then I built the sources with the following flags:

$ CFLAGS=-DSQLITE_ENABLE_COLUMN_METADATA=1 ./configure && make

Then I just added the .libs path inside the SQLite src dir to the LD_LIBRARY_PATH (hey! I know it is not clean but I’m just doing a quick test!)

Starting up Plastic


I typed:

$ LD_LIBRARY_PATH=/root/sqlite/sqlite-autoconf-3070400/.libs:/usr/lib:/root/plastic/server: mono plasticd.exe --console

And it … started up!



But then I connected from another machine and got a beautiful zlib related error. Why? Because Plastic wasn’t correctly loading zlib, so I did the following “fix” (from the server’s path):

$ ln -s /usr/lib/libz.so.1 libz.so

And then I restarted and everything worked!

Ideas


Well, I really love the idea of the “pluggable Plastic SCM server”. I’m using this one as a “spare mirror server” where I automatically push my changes from my laptop on checkin. The “plug” doesn’t have a lot of “disk space” (flash) but an external card can be plugged in or even an external hard drive. Or, even better, I’ll give it a try connecting the Plastic SCM server on it to an external MySQL database… Cool, isn’t it? I mean, for $99 you can have a really cheap mirror server (unless you’re a team with 100 developers or more but, hey!, then don’t be so cheap and buy a real backup!! :P)
Pablo Santos
I'm the CTO and Founder at Códice.
I've been leading Plastic SCM since 2005. My passion is helping teams work better through version control.
I had the opportunity to see teams from many different industries at work while I helped them improving their version control practices.
I really enjoy teaching (I've been a University professor for 6+ years) and sharing my experience in talks and articles.
And I love simple code. You can reach me at @psluaces.

2 comments:

  1. Can you tell a little more about the SDK, when it is coming, what is contained in it and what should be possible with it?

    ReplyDelete
  2. I've got a couple of SheevaPlugs. One of them uses Mono to run the @MSDownloads RSS/Twitter feed - http://www.thundermain.com/rss

    ReplyDelete