Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
3286dd7a
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
3286dd7a
编写于
7月 03, 2016
作者:
D
Douwe Maan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Don't garbage collect commits that have related DB records like comments
上级
0ccdc631
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
84 addition
and
7 deletion
+84
-7
CHANGELOG
CHANGELOG
+1
-0
app/models/ci/pipeline.rb
app/models/ci/pipeline.rb
+6
-0
app/models/ci/trigger_request.rb
app/models/ci/trigger_request.rb
+1
-1
app/models/merge_request.rb
app/models/merge_request.rb
+9
-3
app/models/merge_request_diff.rb
app/models/merge_request_diff.rb
+10
-1
app/models/note.rb
app/models/note.rb
+7
-0
app/models/repository.rb
app/models/repository.rb
+20
-0
app/models/sent_notification.rb
app/models/sent_notification.rb
+8
-0
app/models/todo.rb
app/models/todo.rb
+8
-0
spec/models/merge_request_spec.rb
spec/models/merge_request_spec.rb
+2
-2
spec/models/note_spec.rb
spec/models/note_spec.rb
+4
-0
spec/models/repository_spec.rb
spec/models/repository_spec.rb
+8
-0
未找到文件。
CHANGELOG
浏览文件 @
3286dd7a
...
...
@@ -31,6 +31,7 @@ v 8.10.0 (unreleased)
- Metrics for Rouge::Plugins::Redcarpet and Rouge::Formatters::HTMLGitlab
- Allow [ci skip] to be in any case and allow [skip ci]. !4785 (simon_w)
- Add basic system information like memory and disk usage to the admin panel
- Don't garbage collect commits that have related DB records like comments
v 8.9.5 (unreleased)
- Improve the request / withdraw access button. !4860
...
...
app/models/ci/pipeline.rb
浏览文件 @
3286dd7a
...
...
@@ -16,6 +16,7 @@ module Ci
# Invalidate object and save if when touched
after_touch
:update_state
after_save
:keep_around_commits
def
self
.
truncate_sha
(
sha
)
sha
[
0
...
8
]
...
...
@@ -212,5 +213,10 @@ module Ci
self
.
duration
=
statuses
.
latest
.
duration
save
end
def
keep_around_commits
project
.
repository
.
keep_around
(
self
.
sha
)
project
.
repository
.
keep_around
(
self
.
before_sha
)
end
end
end
app/models/ci/trigger_request.rb
浏览文件 @
3286dd7a
module
Ci
class
TriggerRequest
<
ActiveRecord
::
Base
extend
Ci
::
Model
belongs_to
:trigger
,
class_name:
'Ci::Trigger'
belongs_to
:pipeline
,
class_name:
'Ci::Pipeline'
,
foreign_key: :commit_id
has_many
:builds
,
class_name:
'Ci::Build'
...
...
app/models/merge_request.rb
浏览文件 @
3286dd7a
...
...
@@ -117,6 +117,8 @@ class MergeRequest < ActiveRecord::Base
scope
:join_project
,
->
{
joins
(
:target_project
)
}
scope
:references_project
,
->
{
references
(
:target_project
)
}
after_save
:keep_around_commit
def
self
.
reference_prefix
'!'
end
...
...
@@ -536,12 +538,12 @@ class MergeRequest < ActiveRecord::Base
"refs/merge-requests/
#{
iid
}
/head"
end
def
ref_
is_
fetched?
File
.
exist?
(
File
.
join
(
project
.
repository
.
path_to_repo
,
ref_path
)
)
def
ref_fetched?
project
.
repository
.
ref_exists?
(
ref_path
)
end
def
ensure_ref_fetched
fetch_ref
unless
ref_
is_
fetched?
fetch_ref
unless
ref_fetched?
end
def
in_locked_state
...
...
@@ -600,4 +602,8 @@ class MergeRequest < ActiveRecord::Base
def
can_be_cherry_picked?
merge_commit
end
def
keep_around_commit
project
.
repository
.
keep_around
(
self
.
merge_commit_sha
)
end
end
app/models/merge_request_diff.rb
浏览文件 @
3286dd7a
...
...
@@ -24,6 +24,7 @@ class MergeRequestDiff < ActiveRecord::Base
serialize
:st_diffs
after_create
:reload_content
,
unless: :importing?
after_save
:keep_around_commit
def
reload_content
reload_commits
...
...
@@ -145,7 +146,11 @@ class MergeRequestDiff < ActiveRecord::Base
end
new_attributes
[
:st_diffs
]
=
new_diffs
new_attributes
[
:base_commit_sha
]
=
self
.
repository
.
merge_base
(
self
.
head
,
self
.
base
)
base_commit_sha
=
self
.
repository
.
merge_base
(
self
.
head
,
self
.
base
)
new_attributes
[
:base_commit_sha
]
=
base_commit_sha
self
.
repository
.
keep_around
(
base_commit_sha
)
update_columns_serialized
(
new_attributes
)
end
...
...
@@ -217,4 +222,8 @@ class MergeRequestDiff < ActiveRecord::Base
update_columns
(
new_attributes
.
merge
(
updated_at:
current_time_from_proper_timezone
))
reload
end
def
keep_around_commit
self
.
repository
.
keep_around
(
self
.
base_commit_sha
)
end
end
app/models/note.rb
浏览文件 @
3286dd7a
...
...
@@ -66,6 +66,7 @@ class Note < ActiveRecord::Base
end
before_validation
:clear_blank_line_code!
after_save
:keep_around_commit
class
<<
self
def
model_name
...
...
@@ -215,4 +216,10 @@ class Note < ActiveRecord::Base
original_name
=
note
.
match
(
Banzai
::
Filter
::
EmojiFilter
.
emoji_pattern
)[
1
]
Gitlab
::
AwardEmoji
.
normalize_emoji_name
(
original_name
)
end
private
def
keep_around_commit
project
.
repository
.
keep_around
(
self
.
commit_id
)
end
end
app/models/repository.rb
浏览文件 @
3286dd7a
...
...
@@ -203,6 +203,26 @@ class Repository
branch_names
.
include?
(
branch_name
)
end
def
ref_exists?
(
ref
)
rugged
.
references
.
exist?
(
ref
)
end
def
keep_around
(
sha
)
return
unless
sha
&&
commit
(
sha
)
return
if
kept_around?
(
sha
)
rugged
.
references
.
create
(
keep_around_ref_name
(
sha
),
sha
)
end
def
kept_around?
(
sha
)
ref_exists?
(
keep_around_ref_name
(
sha
))
end
def
keep_around_ref_name
(
sha
)
"refs/keep-around/
#{
sha
}
"
end
def
tag_names
cache
.
fetch
(
:tag_names
)
{
raw_repository
.
tag_names
}
end
...
...
app/models/sent_notification.rb
浏览文件 @
3286dd7a
...
...
@@ -9,6 +9,8 @@ class SentNotification < ActiveRecord::Base
validates
:commit_id
,
presence:
true
,
if: :for_commit?
validates
:line_code
,
line_code:
true
,
allow_blank:
true
after_save
:keep_around_commit
class
<<
self
def
reply_key
SecureRandom
.
hex
(
16
)
...
...
@@ -67,4 +69,10 @@ class SentNotification < ActiveRecord::Base
def
to_param
self
.
reply_key
end
private
def
keep_around_commit
project
.
repository
.
keep_around
(
self
.
commit_id
)
end
end
app/models/todo.rb
浏览文件 @
3286dd7a
...
...
@@ -37,6 +37,8 @@ class Todo < ActiveRecord::Base
state
:done
end
after_save
:keep_around_commit
def
build_failed?
action
==
BUILD_FAILED
end
...
...
@@ -73,4 +75,10 @@ class Todo < ActiveRecord::Base
target
.
to_reference
end
end
private
def
keep_around_commit
project
.
repository
.
keep_around
(
self
.
commit_id
)
end
end
spec/models/merge_request_spec.rb
浏览文件 @
3286dd7a
...
...
@@ -464,7 +464,7 @@ describe MergeRequest, models: true do
context
'when it is not broken and has no conflicts'
do
it
'is marked as mergeable'
do
allow
(
subject
).
to
receive
(
:broken?
)
{
false
}
allow
(
project
).
to
receive_message_chain
(
:repository
,
:can_be_merged?
)
{
true
}
allow
(
project
.
repository
).
to
receive
(
:can_be_merged?
)
{
true
}
expect
{
subject
.
check_if_can_be_merged
}.
to
change
{
subject
.
merge_status
}.
to
(
'can_be_merged'
)
end
...
...
@@ -481,7 +481,7 @@ describe MergeRequest, models: true do
context
'when it has conflicts'
do
before
do
allow
(
subject
).
to
receive
(
:broken?
)
{
false
}
allow
(
project
).
to
receive_message_chain
(
:repository
,
:can_be_merged?
)
{
false
}
allow
(
project
.
repository
).
to
receive
(
:can_be_merged?
)
{
false
}
end
it
'becomes unmergeable'
do
...
...
spec/models/note_spec.rb
浏览文件 @
3286dd7a
...
...
@@ -70,6 +70,10 @@ describe Note, models: true do
it
"should be recognized by #for_commit?"
do
expect
(
note
).
to
be_for_commit
end
it
"keeps the commit around"
do
expect
(
note
.
project
.
repository
.
kept_around?
(
commit
.
id
)).
to
be_truthy
end
end
describe
'authorization'
do
...
...
spec/models/repository_spec.rb
浏览文件 @
3286dd7a
...
...
@@ -1117,6 +1117,14 @@ describe Repository, models: true do
end
end
describe
"#keep_around"
do
it
"stores a reference to the specified commit sha so it isn't garbage collected"
do
repository
.
keep_around
(
sample_commit
.
id
)
expect
(
repository
.
kept_around?
(
sample_commit
.
id
)).
to
be_truthy
end
end
def
create_remote_branch
(
remote_name
,
branch_name
,
target
)
rugged
=
repository
.
rugged
rugged
.
references
.
create
(
"refs/remotes/
#{
remote_name
}
/
#{
branch_name
}
"
,
target
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录