From 49cf9badbce730c053496306778b801d596658af Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Thu, 14 Feb 2013 15:17:43 +0200
Subject: [PATCH] Gitlab::ShellEnv added

---
 lib/gitlab/backend/grack_auth.rb |  3 +--
 lib/gitlab/backend/shell.rb      |  1 -
 lib/gitlab/backend/shell_env.rb  | 17 +++++++++++++++++
 lib/gitlab/satellite/action.rb   |  4 ++++
 4 files changed, 22 insertions(+), 3 deletions(-)
 create mode 100644 lib/gitlab/backend/shell_env.rb

diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb
index 8fcafe4ea9..1e85870139 100644
--- a/lib/gitlab/backend/grack_auth.rb
+++ b/lib/gitlab/backend/grack_auth.rb
@@ -32,8 +32,7 @@ module Grack
         self.user = User.find_by_email(login) || User.find_by_username(login)
         return false unless user.try(:valid_password?, password)
 
-        # Set GL_ID env variable
-        ENV['GL_ID'] = "user-#{user.id}"
+        Gitlab::ShellEnv.set_env(user)
       end
 
       # Git upload and receive
diff --git a/lib/gitlab/backend/shell.rb b/lib/gitlab/backend/shell.rb
index 85fa5bda05..b7b92e86a8 100644
--- a/lib/gitlab/backend/shell.rb
+++ b/lib/gitlab/backend/shell.rb
@@ -53,7 +53,6 @@ module Gitlab
       system("/home/git/gitlab-shell/bin/gitlab-keys rm-key #{key_id} \"#{key_content}\"")
     end
 
-
     def url_to_repo path
       Gitlab.config.gitlab_shell.ssh_path_prefix + "#{path}.git"
     end
diff --git a/lib/gitlab/backend/shell_env.rb b/lib/gitlab/backend/shell_env.rb
new file mode 100644
index 0000000000..1572187509
--- /dev/null
+++ b/lib/gitlab/backend/shell_env.rb
@@ -0,0 +1,17 @@
+module Gitlab
+  # This module provide 2 methods
+  # to set specific ENV variabled for GitLab Shell
+  module ShellEnv
+    extend self
+
+    def set_env(user)
+      # Set GL_ID env variable
+      ENV['GL_ID'] = "user-#{user.id}"
+    end
+
+    def reset_env
+      # Reset GL_ID env variable
+      ENV['GL_ID'] = nil
+    end
+  end
+end
diff --git a/lib/gitlab/satellite/action.rb b/lib/gitlab/satellite/action.rb
index ed2541f399..63303ca3de 100644
--- a/lib/gitlab/satellite/action.rb
+++ b/lib/gitlab/satellite/action.rb
@@ -17,6 +17,8 @@ module Gitlab
       # * Locks the satellite repo
       # * Yields the prepared satellite repo
       def in_locked_and_timed_satellite
+        Gitlab::ShellEnv.set_env(user)
+
         Grit::Git.with_timeout(options[:git_timeout]) do
           project.satellite.lock do
             return yield project.satellite.repo
@@ -28,6 +30,8 @@ module Gitlab
       rescue Grit::Git::GitTimeout => ex
         Gitlab::GitLogger.error(ex.message)
         return false
+      ensure
+        Gitlab::ShellEnv.reset_env
       end
 
       # * Clears the satellite
-- 
2.30.9