Subversion to TFS 2012 Migration: Conclusion

If you’ve been following this series of articles, I’ve been attempting to migrate from Subversion to TFS 2012 over the last six months or so and have given up on the idea.  It seems as though we are using a non-standard repository pattern which means the odds are stacked against us.

I’m not a newbie when it comes to troubleshooting TFS, I used to work in Microsoft Developer Support and it was my specialisation, but it shouldn’t be this hard to move from one platform to another.  I know that the Subversion adapter is Alpha but I also attempted to use SVNtoTFS and the trial version of Timely Migration’s tool too without luck.  I’m not sure if the way we’ve used Subversion makes it difficult to move history (update: likely yes) or if the tools just aren’t up to scratch with TFS 2012 but we need our version history and as we can’t get it into TFS, that’s that.

After a lot of effort, we’ve given up on migrating to TFS and instead we are going to use GIT and Stash, we’ve already licences for Jira and Bamboo too so will be investigating these as they are new products to me.  We’ll be self hosting on Linux which should be an experience too and as I’m a Linux newbie I’ll be blogging my experience as I go in order to help other Windows veterans get to grips with things, as well as a reference for myself.

Update: Before leaving the company I had a play with TFS 2013 Preview and had success with the migration, I was made redundant before completing the process though would suggest people try this route.

Subversion to TFS 2012 Migration: Part 3 – Troubleshooting

We hit more problems, as per my last article that means another post!  This post will detail the steps to troubleshoot a merge issue but the techniques I learned are good examples for generic troubleshooting of the TFS Integration Platform.  Our issue;
A set of files aren’t being checked in after a merge in SVN.

Looking at the Subversion log I can see that the files should be checked in during a merge at a specific changeset.  Looking at the TFSIP log you should see entries similar to  “Processing ChangeGroup”, searching the solution for this string takes us to the MigrationEngine.cs file.  I added an IF statement after the processing trace is added such that a break point can be hit when a certain changeset is reached;

TFST - Breakpoint

Adding a breakpoint at line 347 means that you’ll be able to step into the code when a problematic changeset is reached and troubleshooting can begin.

During troubleshooting this issue I randomly hit the following error on build from the  Interop.Subversion project, I resolved by cleaning only that project then rebuilding the solution;

error C1859: ‘Debug\Interop.Subversion.pch’ unexpected precompiled header error, simply rerunning the compiler might fix this problem        D:\tfsip\IntegrationPlatform\Adapters\Subversion\Interop.Subversion\AprPool.cpp

I ended up hitting the same issue as mentioned in part 1 where a manual merge was required and for the life of me I couldn’t remember how I fixed it the first time around.  Follows are my notes from each attempt;

Fail 1:

“1039” issue – Manual rename of folder in TFS and check in;

Source = SVN version 1039
Target = TFS checkin 942

 

Fail 2:

Undo pending change
Delete empty folder from folder B and checkin -> 942
Move from folder A to B and checkin -> 943

Fail 3:

Get latest, undo pending change then open in Windows Explorer.  Manually copy the files from source folder to target then within Source Explorer delete the source folder and add new items to target.  Check in an cross fingers.

1039 -> 942

Fail 4:

Rename B/WebSite to Website2 then checkin
Move A to B and check in

Manually map 1039 to 944
Hit start, map all conflicts to 944

Success:

Resolve Conflict in TE, Rename Server and check in
Map 1039 to 943 in TFS IP.

The simple step I should have taken, and wasn’t aware of, was to open Team Explorer and have a look at the list of pending changes.  This helps a lot and was the troubleshooting step that worked around this issue.  Migration continued

Around a thousand SVN revisions later we hit another issue, this time a runtime conflict; “Checkin failed for unknown reason”.   I opened VS to check pending changes and found missing files, for some reason the Subversion adapter wasn’t getting a few thousand of the files for this revision from the repository.  I manually got that revision from SVN and pasted into the TfsIpData folder and checked in to attempt a manual merge as before.  I managed to check it in but when I kicked off the migration again it threw a few hundred conflicts.

It failed, and I’m sorry to say this is where the story ends as we are cutting our losses with the migration and moving to GIT and Stash.  More on that in the next post.

TaW: Week 9 – Gadgeteer Temperature Logger

It gets cold in our office as for reasons unknown the AC unit appears to be binary; on as cold as possible or off, heat is an unknown concept to it.  To that end, and to see how cold an erratic the temperature is in our office I threw together a .NET Gadgeteer based temperature logger.  It records the temperature and relative humidity to an SD card every thirty seconds but also hosts a simple webserver to allow for on demand readings by anyone in the office.  It was a nice break from screaming at the list of errors the TFS Integration Platform had been throwing at me for the proceeding days…

To speed things up I took examples of code from Mike Dodaro and Stephen Jonston‘s blogs, if you are fans of Gadgeteer these are two blogs you really should keep an eye on.  In fact, I’ve covered some of Stephen’s work in the past with the payload system he developed using the Gadgeteer platform.

My data logger using the temperature and humidity sensor for the obvious reason; an Ethernet module to allow for on demand readings and time synchronisation; an SD card for storing the log; and the usual USB power/GHI Spider mainboard combo.

The code can be found here and requires the latest firmware and SDK from GHI, as of the date of the post that is.

TaW: Week 9 - Temp Logger Photo
Mounted on cardboard using cable ties, quick and simple.

TaW: Week 8 – Dad’s Birthday Card

Unsurprisingly my Dad had a big part in shaping my life, he is a structural engineer by trade and has been running his own business for around 40 years now. My first day of school I was driven there on a crane (I shit you not!), I grew up in a workshop with a couple of MIG welders and more kit than most Hackspaces can shake a stick at and where most kids were building dens out of wood, I used scaffolding.  The most important part of shaping who I am is that he never taught me to weld or use any of that kit, he saw early on that if he did I’d follow in his footsteps and he didn’t (still doesn’t) want that for me.  His work has him outside in all weather, working his arse off, even now.

When I was eight or so, he bought an Epson EL-2 and had a friend of his teach me to use DOS.  Over the years my skills with computers and electronics grew to the point where I now have a degree in Computer Science and ended up working at Microsoft for six years.  He was way ahead of the curve, I still want to learn to weld though…

For years I’ve made my parents birthday cards but today is the first I’ve hand painted.  He intends to retire before too long, his definition of “too long” varies, but one of the hobbies he intends to take back up is sea fishing.  This seemed only appropriate;

TaW 8 - Sea Fishing

Sleep and the Creative Mind

Like many creative people, I don’t find sleep easily.  This is a common theme among those for whom their mind is their instrument and as I lay in bed last night starting into the darkness, trying not to think of the latest crazy thing to do next to add to my list of projects, a thought slipped into mind I believe is worth sharing.

116 amLast week there was a Horizon special on the BBC regarding insight and creativity, the latest theories in neuroscience.  For those in the UK, or for those visiting, here is a link to the show on iPlayer.  One of the theories put forth is that moments of insight, clarity, epiphany or EUREKA! moments seem to occur when the visual cortex is not being stimulated.  They suggested that to stimulate creativity you should put yourself in an environment where you aren’t visually stimulated.  One piece of advice is to ensure you don’t have anything resembling a face or to avoid being around people too as our minds are hardwired to pattern match faces.

For years I’ve wondered why my mind goes into overdrive as soon as my head hits the pillow and I’d always assumed it is related to environment.  When I lived with my parents, at University and for years afterwards in shared houses my room was also my study and living room.  The idea that spending so much time, active and awake, in the same room you sleep in has long been suggested as a link to not being able to switch off.

I’ve also lost count of the number of times I’ve been sat on the sofa, in a bright room, watching people on television and find myself falling asleep.  Five minutes later when I hit the sack, my mind is running a mile a minute.

As I lay in the dark last night attempting slumber, with little to no light in my room and nothing to stimulate my visual cortex it occurred to me that the darkness itself may be the cause of my creativity and of my sleepless nights.  The question is, if true then how to avoid this state of mind?  If the sight of faces can subdue the creative process then I’m wondering if a randomised slideshow of faces could be the antidote.  My reasoning is that if the mind automatically pattern matches faces then a series of randomised portraits would constantly activate these areas of the brain and may assist in quieting the creative areas of the mind.

Hell, it’s worth a try.

TaW: Week 7 – Dual Prototyping Board

Currently working on three things at once to be unveiled over the weekend but realised I needed MORE POWER and thus a second board, I threw together this board to host an Arduino, a Netduino with ECG shield and a breadboard.  Made from a Patron XO Café box and a couple of bolts, there’s a hint if ever you want to buy me something. 😉

 

Week 7: Dual Prototyping Board
Week 7: Dual Prototyping Board

Origin Story

jedibowler.com, now with added back story!  I’ve just imported the posts from my original blog on WordPress.com which included some of my earlier projects.  They may be a bit of a mess and the categories are all out of whack but good to have it all under one roof.

One project I’m going to have to revisit is The Jukebox, there was a nasty electrical issue which fried the motherboard so it is currently mothballed pending a rethink.

Let there be light!

Everything is Incredible and Why We Make

A friend of mind posted a link to a short video about a man in Honduras who has been building a helicopter for fifty years.  He hasn’t had an easy life for reasons explained in the video but his determination hasn’t faltered.  Watch it and see for yourself;



Everything is Incredible, Film About a Disabled Honduran Man Who Has Been Building A Homemade Helicopter from Tyler Bastian on Vimeo.
Some of the comments in the video and the thoughts it raised really rung true, this fellow has a goal and regardless of everything he has gone for it.  Some may feel him foolish but I admire his conviction, I’ve a project that I’ve been planning since I was 14 and 16 years later I’m two years into it.  After watching that video my timescales have shifted but it’s also reminded me that it isn’t going to build itself.  For anyone who watches the video and still doesn’t understand then give this video of a speech by a personal hero of mine a watch;


I can’t explain why we make better than Adam does in that video and in this one line;
“It doesn’t matter what you make and it doesn’t matter why, the importance is that you are making something.”

My next post should feature an Arduino, a piezo buzzer and an EKG monitor.  Why you ask?  Why the hell not.