Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
40134016
Commit
40134016
authored
Jul 02, 2012
by
Saito
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bypass gitolite update hook, and set an GL_USER variable.
parent
82e25518
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
17 additions
and
10 deletions
+17
-10
app/roles/git_push.rb
app/roles/git_push.rb
+5
-7
app/workers/post_receive.rb
app/workers/post_receive.rb
+7
-3
config/initializers/grack_auth.rb
config/initializers/grack_auth.rb
+5
-0
No files found.
app/roles/git_push.rb
View file @
40134016
...
...
@@ -21,7 +21,7 @@ module GitPush
# 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 @@ module GitPush
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 @@ module GitPush
# 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 @
40134016
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 @
40134016
...
...
@@ -7,6 +7,11 @@ module Grack
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