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
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gitlab-ce
Commits
b12e17ff
Commit
b12e17ff
authored
Nov 03, 2015
by
Valery Sizov
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'web_hook_repo_changes'
parents
86c0d8d2
9479496f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
42 additions
and
3 deletions
+42
-3
CHANGELOG
CHANGELOG
+1
-0
doc/web_hooks/web_hooks.md
doc/web_hooks/web_hooks.md
+4
-1
lib/gitlab/push_data_builder.rb
lib/gitlab/push_data_builder.rb
+31
-2
spec/lib/gitlab/push_data_builder_spec.rb
spec/lib/gitlab/push_data_builder_spec.rb
+6
-0
No files found.
CHANGELOG
View file @
b12e17ff
...
...
@@ -20,6 +20,7 @@ v 8.2.0 (unreleased)
- [API] Add ability to fetch the commit ID of the last commit that actually touched a file
- Add "New file" link to dropdown on project page
- Include commit logs in project search
- Add "added", "modified" and "removed" properties to commit object in webhook
v 8.1.1
- Fix cloning Wiki repositories via HTTP (Stan Hu)
...
...
doc/web_hooks/web_hooks.md
View file @
b12e17ff
...
...
@@ -69,7 +69,10 @@ X-Gitlab-Event: Push Hook
}
}
],
"total_commits_count"
:
4
"total_commits_count"
:
4
,
"added"
:
[
"CHANGELOG"
],
"modified"
:
[
"app/controller/application.rb"
],
"removed"
:
[]
}
```
...
...
lib/gitlab/push_data_builder.rb
View file @
b12e17ff
...
...
@@ -18,7 +18,10 @@ module Gitlab
# homepage: String,
# },
# commits: Array,
# total_commits_count: Fixnum
# total_commits_count: Fixnum,
# added: ["CHANGELOG"],
# modified: [],
# removed: ["tmp/file.txt"]
# }
#
def
build
(
project
,
user
,
oldrev
,
newrev
,
ref
,
commits
=
[],
message
=
nil
)
...
...
@@ -33,6 +36,8 @@ module Gitlab
commit_attrs
=
commits_limited
.
map
(
&
:hook_attrs
)
type
=
Gitlab
::
Git
.
tag_ref?
(
ref
)
?
"tag_push"
:
"push"
repo_changes
=
repo_changes
(
project
,
newrev
,
oldrev
)
# Hash to be passed as post_receive_data
data
=
{
object_kind:
type
,
...
...
@@ -55,7 +60,10 @@ module Gitlab
visibility_level:
project
.
visibility_level
},
commits:
commit_attrs
,
total_commits_count:
commits_count
total_commits_count:
commits_count
,
added:
repo_changes
[
:added
],
modified:
repo_changes
[
:modified
],
removed:
repo_changes
[
:removed
]
}
data
...
...
@@ -86,6 +94,27 @@ module Gitlab
newrev
end
end
def
repo_changes
(
project
,
newrev
,
oldrev
)
changes
=
{
added:
[],
modified:
[],
removed:
[]
}
compare_result
=
CompareService
.
new
.
execute
(
project
,
newrev
,
project
,
oldrev
)
if
compare_result
compare_result
.
diffs
.
each
do
|
diff
|
case
true
when
diff
.
deleted_file
changes
[
:removed
]
<<
diff
.
old_path
when
diff
.
renamed_file
,
diff
.
new_file
changes
[
:added
]
<<
diff
.
new_path
else
changes
[
:modified
]
<<
diff
.
new_path
end
end
end
changes
end
end
end
end
spec/lib/gitlab/push_data_builder_spec.rb
View file @
b12e17ff
...
...
@@ -17,6 +17,9 @@ describe 'Gitlab::PushDataBuilder' do
it
{
expect
(
data
[
:repository
][
:git_ssh_url
]).
to
eq
(
project
.
ssh_url_to_repo
)
}
it
{
expect
(
data
[
:repository
][
:visibility_level
]).
to
eq
(
project
.
visibility_level
)
}
it
{
expect
(
data
[
:total_commits_count
]).
to
eq
(
3
)
}
it
{
expect
(
data
[
:added
]).
to
eq
([
"gitlab-grack"
])
}
it
{
expect
(
data
[
:modified
]).
to
eq
([
".gitmodules"
,
"files/ruby/popen.rb"
,
"files/ruby/regex.rb"
])
}
it
{
expect
(
data
[
:removed
]).
to
eq
([])
}
end
describe
:build
do
...
...
@@ -35,5 +38,8 @@ describe 'Gitlab::PushDataBuilder' do
it
{
expect
(
data
[
:ref
]).
to
eq
(
'refs/tags/v1.1.0'
)
}
it
{
expect
(
data
[
:commits
]).
to
be_empty
}
it
{
expect
(
data
[
:total_commits_count
]).
to
be_zero
}
it
{
expect
(
data
[
:added
]).
to
eq
([])
}
it
{
expect
(
data
[
:modified
]).
to
eq
([])
}
it
{
expect
(
data
[
:removed
]).
to
eq
([])
}
end
end
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