Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
d7cc647d99e1
Commit
40134016
authored
Jul 02, 2012
by
Saito
Browse files
bypass gitolite update hook, and set an GL_USER variable.
parent
75db76db48e6
Changes
3
Hide whitespace changes
Inline
Side-by-side
app/roles/git_push.rb
View file @
d7cc647d
...
...
@@ -21,7 +21,7 @@ def update_merge_requests(oldrev, newrev, ref, user)
# Close merge requests
mrs
=
self
.
merge_requests
.
opened
.
where
(
:target_branch
=>
branch_name
).
all
mrs
=
mrs
.
select
(
&
:last_commit
).
select
{
|
mr
|
c_ids
.
include?
(
mr
.
last_commit
.
id
)
}
mrs
=
mrs
.
select
(
&
:last_commit
).
select
{
|
mr
|
c_ids
.
include?
(
mr
.
last_commit
.
id
)
}
mrs
.
each
{
|
merge_request
|
merge_request
.
merge!
(
user
.
id
)
}
true
...
...
@@ -65,7 +65,7 @@ def post_receive_data(oldrev, newrev, ref, user)
total_commits_count:
push_commits_count
}
# For perfomance purposes maximum 20 latest commits
# For perfomance purposes maximum 20 latest commits
# will be passed as post receive hook data.
#
push_commits_limited
.
each
do
|
commit
|
...
...
@@ -86,16 +86,14 @@ def post_receive_data(oldrev, newrev, ref, user)
# This method will be called after each post receive
# and only if
autor_key_id
present in gitlab.
# and only if
user
present in gitlab.
# All callbacks for post receive should be placed here
#
def
trigger_post_receive
(
oldrev
,
newrev
,
ref
,
author_key_id
)
user
=
Key
.
find_by_identifier
(
author_key_id
).
user
def
trigger_post_receive
(
oldrev
,
newrev
,
ref
,
user
)
# Create push event
self
.
observe_push
(
oldrev
,
newrev
,
ref
,
user
)
# Close merged MR
# Close merged MR
self
.
update_merge_requests
(
oldrev
,
newrev
,
ref
,
user
)
# Execute web hooks
...
...
app/workers/post_receive.rb
View file @
d7cc647d
class
PostReceive
@queue
=
:post_receive
def
self
.
perform
(
reponame
,
oldrev
,
newrev
,
ref
,
author_key_id
)
def
self
.
perform
(
reponame
,
oldrev
,
newrev
,
ref
,
identifier
)
project
=
Project
.
find_by_path
(
reponame
)
return
false
if
project
.
nil?
# Ignore push from non-gitlab users
return
false
unless
Key
.
find_by_identifier
(
author_key_id
)
if
/^[A-Z0-9._%a-z\-]+@(?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}$/
.
match
(
identifier
)
return
false
unless
user
=
User
.
find_by_email
(
identifier
)
else
return
false
unless
user
=
Key
.
find_by_identifier
(
identifier
).
try
(
:user
)
end
project
.
trigger_post_receive
(
oldrev
,
newrev
,
ref
,
author_key_id
)
project
.
trigger_post_receive
(
oldrev
,
newrev
,
ref
,
user
)
end
end
config/initializers/grack_auth.rb
View file @
d7cc647d
...
...
@@ -7,6 +7,11 @@ def valid?
user
=
User
.
find_by_email
(
email
)
return
false
unless
user
.
try
(
:valid_password?
,
password
)
# Set GL_USER env variable
ENV
[
'GL_USER'
]
=
email
# Pass Gitolite update hook
ENV
[
'GL_BYPASS_UPDATE_HOOK'
]
=
"true"
# Need this patch because the rails mount
@env
[
'PATH_INFO'
]
=
@env
[
'REQUEST_PATH'
]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment