diff --git a/Gemfile b/Gemfile
index e409e66aab071d2674f7f7dc005bc5af8df9ce1b..0ba6bbdb4b1f055545ee0fa3b59a4e8ccb928c00 100644
--- a/Gemfile
+++ b/Gemfile
@@ -52,7 +52,7 @@ gem "browser", '~> 2.2'
 
 # Extracting information from a git repository
 # Provide access to Gitlab::Git library
-gem "gitlab_git", '~> 10.2'
+gem "gitlab_git", '~> 10.2', path: "~/src/Gitlab/gitlab_git"
 
 # LDAP Auth
 # GitLab fork with several improvements to original library. For full list of changes
diff --git a/Gemfile.lock b/Gemfile.lock
index 35c3770d42ce7c2b1405b6ba4a896aaa20aa18be..4e976370de4a4cb2d8ebb86f94891e3c326b37f1 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,3 +1,12 @@
+PATH
+  remote: ~/src/Gitlab/gitlab_git
+  specs:
+    gitlab_git (10.3.0)
+      activesupport (~> 4.0)
+      charlock_holmes (~> 0.7.3)
+      github-linguist (~> 4.7.0)
+      rugged (~> 0.24.0)
+
 GEM
   remote: https://rubygems.org/
   specs:
@@ -276,11 +285,6 @@ GEM
       posix-spawn (~> 0.3)
     gitlab_emoji (0.3.1)
       gemojione (~> 2.2, >= 2.2.1)
-    gitlab_git (10.2.3)
-      activesupport (~> 4.0)
-      charlock_holmes (~> 0.7.3)
-      github-linguist (~> 4.7.0)
-      rugged (~> 0.24.0)
     gitlab_meta (7.0)
     gitlab_omniauth-ldap (1.2.1)
       net-ldap (~> 0.9)
@@ -391,6 +395,7 @@ GEM
     mail_room (0.8.0)
     method_source (0.8.2)
     mime-types (2.99.2)
+    mime-types-data (3.2016.0521)
     mimemagic (0.3.0)
     mini_portile2 (2.1.0)
     minitest (5.7.0)
@@ -863,7 +868,7 @@ DEPENDENCIES
   github-markup (~> 1.3.1)
   gitlab-flowdock-git-hook (~> 1.0.1)
   gitlab_emoji (~> 0.3.0)
-  gitlab_git (~> 10.2)
+  gitlab_git (~> 10.2)!
   gitlab_meta (= 7.0)
   gitlab_omniauth-ldap (~> 1.2.1)
   gollum-lib (~> 4.1.0)
diff --git a/app/controllers/concerns/creates_commit.rb b/app/controllers/concerns/creates_commit.rb
index 84b4a30c6d5e8f7eb9489ff7f46130de2fc0c3f6..dc1571211063f253272bc3ceaa114a74acabedd1 100644
--- a/app/controllers/concerns/creates_commit.rb
+++ b/app/controllers/concerns/creates_commit.rb
@@ -11,8 +11,16 @@ module CreatesCommit
       file_path: @path
     )
 
+    puts "#" * 10
+    puts @previous_path
+    puts "#" * 10
+
     result = service.new(@tree_edit_project, current_user, commit_params).execute
 
+    puts "#" * 30
+    puts result[:status]
+    puts "#" * 30
+
     if result[:status] == :success
       update_flash_notice(success_notice)
 
diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb
index 2bd86a1f1265663c83448c773b79da6aa5eb9bbf..e2ddda1474b34760075616684d41e98ceb022a97 100644
--- a/app/controllers/projects/blob_controller.rb
+++ b/app/controllers/projects/blob_controller.rb
@@ -43,8 +43,8 @@ class Projects::BlobController < Projects::ApplicationController
         diffs_namespace_project_merge_request_path(from_merge_request.target_project.namespace, from_merge_request.target_project, from_merge_request) +
           "#file-path-#{hexdigest(@path)}"
       else
-        unless params[:file_name] == @path
-          previous_path = @path
+        unless params[:file_name].empty?
+          @previous_path = @path
           @path = params[:file_name]
         end
 
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 078ca8f4e13659121bf9abb2ea328ea15b9726be..75071c65efbda13f5810bc6a8c1bfbee03ea9667 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -741,6 +741,39 @@ class Repository
     end
   end
 
+  def update_file(user, path, previous_path, content, message, branch, update)
+    commit_with_hooks(user, branch) do |ref|
+      committer = user_to_committer(user)
+      options = {}
+      options[:committer] = committer
+      options[:author] = committer
+      options[:commit] = {
+        message: message,
+        branch: ref
+      }
+
+      options[:file] = {
+        content: content,
+        path: path,
+        update: update
+      }
+
+      if previous_path
+        options[:file].merge!(previous_path: previous_path)
+
+        puts "#" * 90
+        puts "Hello"
+        puts "#" * 90
+        Gitlab::Git::Blob.rename(raw_repository, options)
+      else
+        puts "#" * 90
+        puts "World"
+        puts "#" * 90
+        Gitlab::Git::Blob.commit(raw_repository, options)
+      end
+    end
+  end
+
   def remove_file(user, path, message, branch)
     commit_with_hooks(user, branch) do |ref|
       committer = user_to_committer(user)
diff --git a/app/services/files/update_service.rb b/app/services/files/update_service.rb
index 52451d72b571ee2a53117c4452acc916157b10bd..7b7bce206625080da4703bceaf3a4ebc3fc05d30 100644
--- a/app/services/files/update_service.rb
+++ b/app/services/files/update_service.rb
@@ -4,7 +4,10 @@ module Files
   class UpdateService < Files::BaseService
     def commit
       # Need to update file_path with the new filename
-      repository.commit_file(current_user, @file_path, @file_content, @commit_message, @target_branch, true)
+      puts "#" * 10
+      puts @previous_path
+      puts "#" * 10
+      repository.update_file(current_user, @file_path, @previous_path, @file_content, @commit_message, @target_branch, true)
     end
   end
 end