From 5f4fea17ad42d24f069d19d36853b7ea61ee66c8 Mon Sep 17 00:00:00 2001
From: Angus MacArthur <amacarthur@blackberry.com>
Date: Mon, 3 Jun 2013 11:00:24 -0400
Subject: [PATCH] Correction to restore expected current directory

---
 lib/tasks/gitlab/backup.rake | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/lib/tasks/gitlab/backup.rake b/lib/tasks/gitlab/backup.rake
index 920d29a444e..d071938acb5 100644
--- a/lib/tasks/gitlab/backup.rake
+++ b/lib/tasks/gitlab/backup.rake
@@ -91,15 +91,20 @@ namespace :gitlab do
       ENV["VERSION"] = "#{settings[:db_version]}" if settings[:db_version].to_i > 0
 
       # backups directory is not always sub of Rails root and able to execute the git rev-parse below
-      Dir.chdir(Rails.root)
-
-      # restoring mismatching backups can lead to unexpected problems
-      if settings[:gitlab_version] != %x{git rev-parse HEAD}.gsub(/\n/,"")
-        puts "GitLab version mismatch:".red
-        puts "  Your current HEAD differs from the HEAD in the backup!".red
-        puts "  Please switch to the following revision and try again:".red
-        puts "  revision: #{settings[:gitlab_version]}".red
-        exit 1
+      begin
+        Dir.chdir(Rails.root)
+
+        # restoring mismatching backups can lead to unexpected problems
+        if settings[:gitlab_version] != %x{git rev-parse HEAD}.gsub(/\n/, "")
+          puts "GitLab version mismatch:".red
+          puts "  Your current HEAD differs from the HEAD in the backup!".red
+          puts "  Please switch to the following revision and try again:".red
+          puts "  revision: #{settings[:gitlab_version]}".red
+          exit 1
+        end
+      ensure
+        # chdir back to original intended dir
+        Dir.chdir(Gitlab.config.backup.path)
       end
 
       Rake::Task["gitlab:backup:db:restore"].invoke
-- 
GitLab