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
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kazuhiko Shiozaki
gitlab-ce
Commits
e2f937ce
Commit
e2f937ce
authored
Nov 18, 2015
by
Grzegorz Bizon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor RepositoryPush, move to Message namespace
parent
45f7f01f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
140 additions
and
134 deletions
+140
-134
app/mailers/emails/projects.rb
app/mailers/emails/projects.rb
+20
-18
lib/gitlab/email/message/repository_push.rb
lib/gitlab/email/message/repository_push.rb
+120
-0
lib/gitlab/email/repository_push.rb
lib/gitlab/email/repository_push.rb
+0
-116
No files found.
app/mailers/emails/projects.rb
View file @
e2f937ce
...
...
@@ -60,26 +60,28 @@ module Emails
end
def
repository_push_email
(
project_id
,
recipient
,
opts
=
{})
email
=
Gitlab
::
Email
::
RepositoryPush
.
new
(
project_id
,
recipient
,
opts
)
@project
=
email
.
project
@current_user
=
@author
=
email
.
author
@reverse_compare
=
email
.
reverse_compare
@compare
=
email
.
compare
@ref_name
=
email
.
ref_name
@ref_type
=
email
.
ref_type
@action
=
email
.
action
@disable_diffs
=
email
.
disable_diffs
@commits
=
email
.
commits
@diffs
=
email
.
diffs
@action_name
=
email
.
action_name
@target_url
=
email
.
target_url
repository_push
=
Gitlab
::
Email
::
Message
::
RepositoryPush
.
new
(
self
,
project_id
,
recipient
,
opts
)
@project
=
repository_push
.
project
@current_user
=
@author
=
repository_push
.
author
@reverse_compare
=
repository_push
.
reverse_compare
@compare
=
repository_push
.
compare
@ref_name
=
repository_push
.
ref_name
@ref_type
=
repository_push
.
ref_type
@action
=
repository_push
.
action
@action_name
=
repository_push
.
action_name
@disable_diffs
=
repository_push
.
disable_diffs
@commits
=
repository_push
.
commits
@diffs
=
repository_push
.
diffs
@target_url
=
repository_push
.
target_url
@disable_footer
=
true
mail
(
from:
sender
(
email
.
author_id
,
email
.
send_from_committer_email
),
reply_to:
email
.
reply_to
,
to:
email
.
recipient
,
subject:
email
.
subject
)
mail
(
from:
sender
(
repository_push
.
author_id
,
repository_push
.
send_from_committer_email
),
reply_to:
repository_push
.
reply_to
,
to:
repository_push
.
recipient
,
subject:
repository_push
.
subject
)
end
end
end
lib/gitlab/email/message/repository_push.rb
0 → 100644
View file @
e2f937ce
module
Gitlab
module
Email
module
Message
class
RepositoryPush
attr_reader
:compare
,
:reverse_compare
,
:send_from_committer_email
,
:disable_diffs
,
:action
,
:ref
,
:author_id
attr_accessor
:recipient
def
initialize
(
notify
,
project_id
,
recipient
,
opts
=
{})
raise
ArgumentError
,
'Missing arguments: author_id, ref, action'
unless
opts
[
:author_id
]
&&
opts
[
:ref
]
&&
opts
[
:action
]
@notify
=
notify
@project_id
=
project_id
@recipient
=
recipient
@author_id
=
opts
[
:author_id
]
@ref
=
opts
[
:ref
]
@action
=
opts
[
:action
]
@compare
=
opts
[
:compare
]
||
nil
@reverse_compare
=
opts
[
:reverse_compare
]
||
false
@send_from_committer_email
=
opts
[
:send_from_committer_email
]
||
false
@disable_diffs
=
opts
[
:disable_diffs
]
||
false
@author
=
author
@project
=
project
@commits
=
commits
@diffs
=
diffs
@ref_name
=
ref_name
@ref_type
=
ref_type
@action_name
=
action_name
end
def
project
Project
.
find
(
@project_id
)
end
def
author
User
.
find
(
@author_id
)
end
def
commits
Commit
.
decorate
(
@compare
.
commits
,
@project
)
if
@compare
end
def
diffs
@compare
.
diffs
if
@compare
end
def
action_name
case
@action
when
:create
'pushed new'
when
:delete
'deleted'
else
'pushed to'
end
end
def
subject
subject_text
=
'[Git]'
subject_text
<<
"[
#{
@project
.
path_with_namespace
}
]"
subject_text
<<
"[
#{
@ref_name
}
]"
if
@action
==
:push
subject_text
<<
' '
if
@action
==
:push
if
@commits
.
length
>
1
subject_text
<<
"Deleted "
if
@reverse_compare
subject_text
<<
"
#{
@commits
.
length
}
commits:
#{
@commits
.
first
.
title
}
"
else
subject_text
<<
"Deleted 1 commit: "
if
@reverse_compare
subject_text
<<
@commits
.
first
.
title
end
else
subject_action
=
@action_name
.
dup
subject_action
[
0
]
=
subject_action
[
0
].
capitalize
subject_text
<<
"
#{
subject_action
}
#{
@ref_type
}
#{
@ref_name
}
"
end
end
def
ref_name
Gitlab
::
Git
.
ref_name
(
@ref
)
end
def
ref_type
Gitlab
::
Git
.
tag_ref?
(
@ref
)
?
'tag'
:
'branch'
end
def
target_url
if
@action
==
:push
if
@commits
.
length
>
1
@notify
.
namespace_project_compare_url
(
@project
.
namespace
,
@project
,
from:
Commit
.
new
(
@compare
.
base
,
@project
),
to:
Commit
.
new
(
@compare
.
head
,
@project
))
else
@notify
.
namespace_project_commit_url
(
@project
.
namespace
,
@project
,
@commits
.
first
)
end
else
unless
@action
==
:delete
@notify
.
namespace_project_tree_url
(
@project
.
namespace
,
@project
,
@ref_name
)
end
end
end
def
reply_to
if
@send_from_committer_email
&&
@notify
.
can_send_from_user_email?
(
@author
)
@author
.
email
else
Gitlab
.
config
.
gitlab
.
email_reply_to
end
end
end
end
end
end
lib/gitlab/email/repository_push.rb
deleted
100644 → 0
View file @
45f7f01f
module
Gitlab
module
Email
class
RepositoryPush
attr_reader
:compare
,
:reverse_compare
,
:send_from_cmmitter_email
,
:disable_diffs
,
:action
,
:ref
,
:author_id
def
initialize
(
project_id
,
recipient
,
opts
=
{})
raise
ArgumentError
,
'Missing arguments: author_id, ref, action'
unless
opts
[
:author_id
]
&&
opts
[
:ref
]
&&
opts
[
:action
]
@project_id
=
project_id
@recipient
=
recipient
@author_id
=
opts
[
:author_id
]
@ref
=
opts
[
:ref
]
@action
=
opts
[
:action
]
@compare
=
opts
[
:compare
]
||
nil
@reverse_compare
=
opts
[
:reverse_compare
]
||
false
@send_from_committer_email
=
opts
[
:send_from_committer_email
]
||
false
@disable_diffs
=
opts
[
:disable_diffs
]
||
false
@author
=
author
@project
=
project
@commits
=
commits
@diffs
=
diffs
@ref_name
=
ref_name
@ref_type
=
ref_type
@action_name
=
action_name
end
def
project
Project
.
find
(
@project_id
)
end
def
author
User
.
find
(
@author_id
)
end
def
commits
Commit
.
decorate
(
@compare
.
commits
,
@project
)
if
@compare
end
def
diffs
@compare
.
diffs
if
@compare
end
def
action_name
case
@action
when
:create
'pushed new'
when
:delete
'deleted'
else
'pushed to'
end
end
def
subject
subject_text
=
'[Git]'
subject_text
<<
"[
#{
@project
.
path_with_namespace
}
]"
subject_text
<<
"[
#{
@ref_name
}
]"
if
@action
==
:push
subject_text
<<
' '
if
@action
==
:push
if
@commits
.
length
>
1
subject_text
<<
"Deleted "
if
@reverse_compare
subject_text
<<
"
#{
@commits
.
length
}
commits:
#{
@commits
.
first
.
title
}
"
else
subject_text
<<
"Deleted 1 commit: "
if
@reverse_compare
subject_text
<<
@commits
.
first
.
title
end
end
subject_action
=
@action_name
.
dup
subject_action
[
0
]
=
subject_action
[
0
].
capitalize
subject_text
<<
"
#{
subject_action
}
#{
@ref_type
}
#{
@ref_name
}
"
end
def
ref_name
Gitlab
::
Git
.
ref_name
(
@ref
)
end
def
ref_type
Gitlab
::
Git
.
tag_ref?
(
@ref
)
?
'tag'
:
'branch'
end
def
target_url
if
action
==
:push
if
@commits
.
length
>
1
namespace_project_compare_url
(
@project
.
namespace
,
@project
,
from:
Commit
.
new
(
@compare
.
base
,
@project
),
to:
Commit
.
new
(
@compare
.
head
,
@project
))
else
namespace_project_commit_url
(
@project
.
namespace
,
@project
,
@commits
.
first
)
end
end
if
action
!=
:delete
&&
action
!=
:push
namespace_project_tree_url
(
@project
.
namespace
,
@project
,
@ref_name
)
end
end
def
reply_to
if
@send_from_committer_email
&&
can_send_from_user_email?
(
@author
)
@author
.
email
else
Gitlab
.
config
.
gitlab
.
email_reply_to
end
end
end
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