Tag Archives: migration

Migrating Gitorious to Another Server

We’re migrating our cloud service to a more stable platform. Because of the nature of our original set up, it actually made mode sense to create new VMs and move our software team’s tools: Redmine, TeamCity and Gitorious, to the new servers.

I’m working currently on migrating Gitorious. It looks to be a fairly straightforward process: install Gitorious on the new server, upgrade the old server’s version to the the same one, then use the latest daily backup to move the data from one server to the other. The middle step may not be necessary to everyone. But it appeared that I was several updates behind.

I installed Gitorious on our new server. I was quite happy to see that there is now an installation script. When I originally installed the software, I ran through several online sets of directions before I finally found one that worked on our CentOS installation. Note that the directions I’ve linked to are for 5.5, not 6.x. But they did work.  I never did find one that ran successfully on Ubuntu.

But, as I said, installation ran much more smoothly with the installation script. I did run into one issue, however. The upgrade page says to type the following:

bundle exec rake changelog

to determine which version you’re on, and which ones you can upgrade to. I couldn’t get that command to work, so I’m going to assume that the latest version to which I can update the old one is the current version on the new one. Crossing fingers!

I am, as I said migrating to a new server. It is in a different network, so the IP address and FQDN will be different from the current server.


Well, the installation, I’m happy to say, went very smoothly. Using the installation script, everything went into place and the server started without a hitch. There were a couple of minor glitches along the way: There’s an error that kept popping up:

Failed loading some test dependencies: cannot load such file -- ci/reporter/rake/minitest

But a search on the web essentially said, “Don’t worry about it.” So I didn’t.

The other glitch was in the configuration file, gitorious.yml. Apparently, the notification email variable had changed from exception_notification_emails to exception_recipients. So I commented out the former, added the latter, and put in my email address.

Restoring Data

Next step was restoring data. I took the latest backup from our old server and, using the ‘bin/restore’ command, restored the data to my system.

Herein lay the problems. First of all, the changelog tool didn’t work to let me know what the new version was that I was installing. But I discovered by reading the documentation (amazing thing, documentation!) that I was installing version 3.0. Unfortunately, the furthest I could upgrade the old site was to 2.3. We’ll I’d see if I could get at least our repositories and projects restored, if nothing else.

Next issue: it couldn’t write to db/schema.rb. Odd, since the installation set the owners and permissions on the files. But I changed the owner from root to ‘git’ and that problem was solved.

The last issue was related to that new email variable:

undefined method `new' for ExceptionNotifier:Module

As soon as I commented that out, the restore worked perfectly ….. sorta.

When I tried restarting the server, I started getting 502 errors. I tried restarting the server and it didn’t seem to help.

I figured at this point that I probably had a mix of versions in place. So I tried an upgrade of the new install.

I’d again added the new email variable, exception_notifier, and again I received the above error.  So that variable is staying out of the config file for now.

Where I Am Now

Everything is up and running. All the projects show up and the repositories are all present and accounted for.

I am having a problem with the new system not accepting ssh public keys. You can upload them, but they are never ‘accepted’. Leastways, they weren’t showing as ‘accepted’ within the usual 5 -10 minutes. I’m guessing it might be an OpenSSH problem. But we’ll see.

I’ll post a comment here when I figure that one out.