Archive for the 'SCM' Category

Old PC working again

I’ve got the old PC up and running again. It was no easy quest to find a matching motherboard for an ancient computer. I ended up buying a used board.
The current plan is to run it as a file- and svn-server mainly, but I had to keep running XP so the kids can do their stuff on it. I will probably have the svn repository on the system disk and back it up daily to the other disk. I will also make some kind of offsite backup of critical data, like source code and pictures. My free 2GB account at Diino will definitively be enough for the source code. I might even be able to ftp it to my web host. All pictures are a different story. I think I’ve got over 2GB already. On the other hand; I am thinking of moving my web site to Dreamhost and they offer a lot of space for their hosting plans.

I haven’t finally decided if I should run Subversion my self. If I go to Dreamhost I can use svn there, but then it will be unavailable when my crappy internet connection drops. It will be available when I’m not at home though, and I wont have to keep my box running all the time. That will probably save me a lot of money per year.

If only people could click more on my ads so that my internet activities become self financing. I’ve got a donation button if someone feels like helping me move to Dreamhost.

No SVN, bummer

I’m using OpenSVN to manage the source code to some of my projects, but it has been down for a couple of days now. That is a real pain. IT is (was) a free service so have expected that it would shut down eventually.

I don’t have a computer that I can run SVN on. I do all my programming on the same machine so I could possibly run SVN or (evil thought) SourceSafe on that and use Diino for external backup. But I am a bit to lazy to set up backup routines ad manage the SVN server.

The SVN host I have seen online are a bit to expensive for me. I’d gladly use a cheap one with a low up time guarantee, as long as they make some kind of guarantee.

Hmm, maybe it would be possible to sign up as a reseller for one of the big server farms and sell hosted SVN.

(Just two seconds after I posted this OpenSVN was up again but I really have to get something a little more reliable.)

Working offline with Team Foundation Server

I’m just about done reading Professional Team Foundation Serverand at the end I found this little gem:

This tip needs the Team Foundation Power Tool (tfpt.exe) to work.

When you are working offline you just clear the read-only attribute on the files you want to edit. Later, when you are online, you open the command line, navigate to your workspace and run:

tfpt.exe online

Now the power tool will find all those writable files and create a change set from them.

Remember that you can not rename files while offline, but it is ok to add or remove files.

Check your automatic builds frequently

Make sure your automatic, daily and continuous, build actually works.

It is just like checking that your backup procedures actually works. You do not want to find out either one of those is not working when you really need them.

This weekend our Team Foundation Server was moved and everything looked all right on Monday morning. There was no problem at all to connect to the new server and the Cruise Control Tray icon was a comforting green. I did have that uncomfortable feeling that something was wrong though…

… and sure enough; the configuration for Cruise Control wasn’t changed so it looked at the old server and kept on building the same old stuff.

Broken builds sucks and it should be a cooperative effort to keep the system in a buildable state, but there has to someone responsible for the automation. Someone who verifies the build frequently.

TFS:All files are up to date.

If you do a

tf.exe get filename.ext

and get All files are up to date. back, it might be because your current directory is not correctly mapped to a folder in the Team Foundation Server project your root folder is mapped to.

It your server ‘tree’ looks like this:


ProjectName
Source
ClientCode
...
ServerCode
...

…and your local folders look like this:

ProjectName
Source
ClientCode
...
ServerCode
...
TemporarySource
ClientCode
...
ServerCode
...

…then you will get All files are up to date. if you try to get files in the TemporarySource-tree.

This really bit me because I thought the return message meant that I had the current version of the file on disk, so when I tried a tf.exe checkout filename.ext and got TemporarySource\filename.exe could not be found in your workspace. I did a lot of swearing before I figured out I was in the wrong folder.

Continuous builds instead of meetings.

Lots of times I have been involved in lengthy discussions about how to solve a problem and trying to guess what the user really wanted based on his initial request. It is not uncommon that implementing all of the possible solutions and lettings the user choose the one that satisfies his needs would have been done in a shorter amount of time than discussing it.

I’m probably rambling but if we have a continuous build, that is releasable, we could in many of these cases give the customer builds with all of the solutions and let the customer decide.

I have heard of development teams that has taken deliverable builds to such an extreme that they build Virtual PC images with their system preinstalled every night. So even if there is server software involved it is possible to create agile deliveries.

Installable daily builds and salesmen

I have quite often ended up in situations where the salesman has promised new or existing customer non-existing functions. Functions that took lots of overtime and ugly code to get done. When developers, more or less loudly, protests against this practice they are either laughed off or told they don’t understand the sales process.

Quite often these forced solutions are not tested enough so the client isn’t satisfied anyway.

Assuming you took my previous advice and created releasable daily builds, I suggest you deliver what you have at the moment and update with new functionality as it is done. With shorter iterations everyone involved gets a feeling of success. This will probably not work for all kinds of systems but I think that generally it is not devastating if you (re-)introduce a bug that a large regression test would have found. The risk is quite big that a suite of test that are run a couple of times a year will find less than an ever growing suite of tests that are run every day. Furthermore, the receiver knows it it non-critical since there a new deliveries soon.

I don’t think you should be afraid to deliver often. One way of removing that fear is to have a well organized automatic test suite and build environment.

Releasable daily builds

Share and store documents… Free.

When you do daily builds, a practice I think is essential for high quality software development, it is important to make sure the build is so complete and easy to find that the test team and sales force can choose what version, and when, to install by them selfs.

It is an accepted truth that the longer you wait to fix an error the more expensive it gets. If the test team can verify a fix the day after it is checked in to the source repository instead of waiting for the next sanctioned release both the feed back loop and cost gets smaller.

For this to work all of the organization has to work in union to keep the daily build complete. It will not work if someone is working by him self and checking in bad code because he ‘knows’ there is a long time until the next release. If the development is done for a customer that expects to see continuous progress it is extra bad if someone is checking in bad code. It is a problem that is not solved with unit testing since the result of those is easily manipulated by the rouge developer.

Everyone has to work together to make each and every daily build ready for release.

TFS Listener for logview4net

Howard van Rooijen has created a template for creating listeners to Team Foundation Server events. This might come in handy since I was thinking of creating a TFS Listener for logview4net.

I am about to separate the SQL and EventLog listeners to an assembly for MS listeners. A TFS Listener is exactly what that would need.

Add: Share and store documents… Free.

Unshelve files in TFS

If you are looking for your shelved changes in the Source Control Explorer you are out of luck.

There is a tool item in the Pending Changes windows for managing you shelved files.

Next Page »

Close
E-mail It