Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-08-14 16:22:48 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-08-14 16:22:48 +0300
commitbacad39ef984b99520f8d2a7921acd5c8bdab1ef (patch)
tree5340d199dc60320466a7ff869917e9d6aa62fa67 /app/services
parent9649f9387a4ef3c40bc2720053b716c987255363 (diff)
Make sure target has not changed during pre-receive hook
Diffstat (limited to 'app/services')
-rw-r--r--app/services/commit_service.rb9
1 files changed, 8 insertions, 1 deletions
diff --git a/app/services/commit_service.rb b/app/services/commit_service.rb
index 92d1585840b..d158f103530 100644
--- a/app/services/commit_service.rb
+++ b/app/services/commit_service.rb
@@ -34,7 +34,14 @@ class CommitService
repository.rugged.references.create(Gitlab::Git::BRANCH_REF_PREFIX + ref, sha)
else
# Update head
- repository.rugged.references.update(Gitlab::Git::BRANCH_REF_PREFIX + ref, sha)
+ current_target = repository.find_branch(ref).target
+
+ # Make sure target branch was not changed during pre-receive hook
+ if current_target == target
+ repository.rugged.references.update(Gitlab::Git::BRANCH_REF_PREFIX + ref, sha)
+ else
+ raise CommitError.new('Commit was rejected because branch received new push')
+ end
end
# Run GitLab post receive hook