summaryrefslogtreecommitdiff
path: root/app/models/repository.rb
diff options
context:
space:
mode:
authorKim "BKC" Carlbäcker <kim.carlbacker@gmail.com>2018-01-18 21:31:40 +0100
committerKim "BKC" Carlbäcker <kim.carlbacker@gmail.com>2018-01-18 21:31:40 +0100
commit58aa32bceab1483897f3e898151e60b0cf917f68 (patch)
tree04a4fb89508c5daaba5d3c70039cee0e13fb3cf6 /app/models/repository.rb
parentceb2a76876de68d705ab6d9ae677fb90fc8bab3e (diff)
downloadgitlab-ce-58aa32bceab1483897f3e898151e60b0cf917f68.tar.gz
Wrap Rugged-exceptions in Gitlab::Git::Repository#write_refgitaly-write-ref-error-handling
Diffstat (limited to 'app/models/repository.rb')
-rw-r--r--app/models/repository.rb12
1 files changed, 7 insertions, 5 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb
index b4bc0f87458..f717d248615 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -261,12 +261,14 @@ class Repository
# This will still fail if the file is corrupted (e.g. 0 bytes)
begin
raw_repository.write_ref(keep_around_ref_name(sha), sha, shell: false)
- rescue Rugged::ReferenceError => ex
- Rails.logger.error "Unable to create #{REF_KEEP_AROUND} reference for repository #{path}: #{ex}"
- rescue Rugged::OSError => ex
- raise unless ex.message =~ /Failed to create locked file/ && ex.message =~ /File exists/
+ rescue Gitlab::Git::CommandError => ex
+ if ex.message.start_with?("ReferenceError: ")
+ Rails.logger.error "Unable to create #{REF_KEEP_AROUND} reference for repository #{path}: #{ex}"
+ elsif ex.message.start_with?("OSError: ")
+ raise unless ex.message =~ /Failed to create locked file/ && ex.message =~ /File exists/
- Rails.logger.error "Unable to create #{REF_KEEP_AROUND} reference for repository #{path}: #{ex}"
+ Rails.logger.error "Unable to create #{REF_KEEP_AROUND} reference for repository #{path}: #{ex}"
+ end
end
end