Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
1127990d
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,发现更多精彩内容 >>
提交
1127990d
编写于
6月 22, 2020
作者:
G
GitLab Bot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add latest changes from gitlab-org/gitlab@master
上级
4584816f
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
143 addition
and
42 deletion
+143
-42
Gemfile
Gemfile
+1
-1
Gemfile.lock
Gemfile.lock
+2
-2
app/controllers/projects/blob_controller.rb
app/controllers/projects/blob_controller.rb
+1
-1
app/controllers/projects/tree_controller.rb
app/controllers/projects/tree_controller.rb
+1
-1
app/models/repository.rb
app/models/repository.rb
+4
-4
app/services/spam/spam_verdict_service.rb
app/services/spam/spam_verdict_service.rb
+1
-4
changelogs/unreleased/sh-fix-gitaly-bug-2857.yml
changelogs/unreleased/sh-fix-gitaly-bug-2857.yml
+5
-0
lib/api/files.rb
lib/api/files.rb
+1
-1
lib/gitlab/git/repository.rb
lib/gitlab/git/repository.rb
+2
-2
lib/gitlab/gitaly_client/commit_service.rb
lib/gitlab/gitaly_client/commit_service.rb
+3
-2
spec/features/projects/files/user_browses_files_spec.rb
spec/features/projects/files/user_browses_files_spec.rb
+20
-0
spec/features/projects/tree/tree_show_spec.rb
spec/features/projects/tree/tree_show_spec.rb
+22
-0
spec/models/repository_spec.rb
spec/models/repository_spec.rb
+30
-0
spec/requests/api/files_spec.rb
spec/requests/api/files_spec.rb
+22
-0
spec/services/spam/spam_verdict_service_spec.rb
spec/services/spam/spam_verdict_service_spec.rb
+3
-3
spec/simplecov_env.rb
spec/simplecov_env.rb
+25
-21
未找到文件。
Gemfile
浏览文件 @
1127990d
...
...
@@ -453,7 +453,7 @@ group :ed25519 do
end
# Gitaly GRPC protocol definitions
gem
'
gitaly
'
,
'~> 13.
1
.0.pre.rc1'
gem
'
gitaly
'
,
'~> 13.
2
.0.pre.rc1'
gem
'
grpc
'
,
'~> 1.24.0'
...
...
Gemfile.lock
浏览文件 @
1127990d
...
...
@@ -377,7 +377,7 @@ GEM
po_to_json (>= 1.0.0)
rails (>= 3.2.0)
git (1.5.0)
gitaly (13.
1
.0.pre.rc1)
gitaly (13.
2
.0.pre.rc1)
grpc (~> 1.0)
github-markup (1.7.0)
gitlab-chronic (0.10.5)
...
...
@@ -1237,7 +1237,7 @@ DEPENDENCIES
gettext (~> 3.2.2)
gettext_i18n_rails (~> 1.8.0)
gettext_i18n_rails_js (~> 1.3)
gitaly (~> 13.
1
.0.pre.rc1)
gitaly (~> 13.
2
.0.pre.rc1)
github-markup (~> 1.7.0)
gitlab-chronic (~> 0.10.5)
gitlab-labkit (= 0.12.0)
...
...
app/controllers/projects/blob_controller.rb
浏览文件 @
1127990d
...
...
@@ -214,7 +214,7 @@ class Projects::BlobController < Projects::ApplicationController
environment_params
=
@repository
.
branch_exists?
(
@ref
)
?
{
ref:
@ref
}
:
{
commit:
@commit
}
environment_params
[
:find_latest
]
=
true
@environment
=
EnvironmentsFinder
.
new
(
@project
,
current_user
,
environment_params
).
execute
.
last
@last_commit
=
@repository
.
last_commit_for_path
(
@commit
.
id
,
@blob
.
path
)
@last_commit
=
@repository
.
last_commit_for_path
(
@commit
.
id
,
@blob
.
path
,
literal_pathspec:
true
)
@code_navigation_path
=
Gitlab
::
CodeNavigationPath
.
new
(
@project
,
@blob
.
commit_id
).
full_json_path_for
(
@blob
.
path
)
render
'show'
...
...
app/controllers/projects/tree_controller.rb
浏览文件 @
1127990d
...
...
@@ -34,7 +34,7 @@ class Projects::TreeController < Projects::ApplicationController
format
.
html
do
lfs_blob_ids
if
Feature
.
disabled?
(
:vue_file_list
,
@project
,
default_enabled:
true
)
@last_commit
=
@repository
.
last_commit_for_path
(
@commit
.
id
,
@tree
.
path
)
||
@commit
@last_commit
=
@repository
.
last_commit_for_path
(
@commit
.
id
,
@tree
.
path
,
literal_pathspec:
true
)
||
@commit
end
end
end
...
...
app/models/repository.rb
浏览文件 @
1127990d
...
...
@@ -684,16 +684,16 @@ class Repository
end
end
def
last_commit_for_path
(
sha
,
path
)
commit
=
raw_repository
.
last_commit_for_path
(
sha
,
path
)
def
last_commit_for_path
(
sha
,
path
,
literal_pathspec:
false
)
commit
=
raw_repository
.
last_commit_for_path
(
sha
,
path
,
literal_pathspec:
literal_pathspec
)
::
Commit
.
new
(
commit
,
container
)
if
commit
end
def
last_commit_id_for_path
(
sha
,
path
)
def
last_commit_id_for_path
(
sha
,
path
,
literal_pathspec:
false
)
key
=
path
.
blank?
?
"last_commit_id_for_path:
#{
sha
}
"
:
"last_commit_id_for_path:
#{
sha
}
:
#{
Digest
::
SHA1
.
hexdigest
(
path
)
}
"
cache
.
fetch
(
key
)
do
last_commit_for_path
(
sha
,
path
)
&
.
id
last_commit_for_path
(
sha
,
path
,
literal_pathspec:
literal_pathspec
)
&
.
id
end
end
...
...
app/services/spam/spam_verdict_service.rb
浏览文件 @
1127990d
...
...
@@ -50,10 +50,7 @@ module Spam
# @TODO metrics/logging
# Expecting:
# error: (string or nil)
# result: (string or nil)
verdict
=
json_result
[
:verdict
]
return
unless
SUPPORTED_VERDICTS
.
include?
(
verdict
)
# verdict: (string or nil)
# @TODO log if json_result[:error]
json_result
[
:verdict
]
...
...
changelogs/unreleased/sh-fix-gitaly-bug-2857.yml
0 → 100644
浏览文件 @
1127990d
---
title
:
Fix 500 errors with filenames that contain glob characters
merge_request
:
34864
author
:
type
:
fixed
lib/api/files.rb
浏览文件 @
1127990d
...
...
@@ -56,7 +56,7 @@ module API
ref:
params
[
:ref
],
blob_id:
@blob
.
id
,
commit_id:
@commit
.
id
,
last_commit_id:
@repo
.
last_commit_id_for_path
(
@commit
.
sha
,
params
[
:file_path
])
last_commit_id:
@repo
.
last_commit_id_for_path
(
@commit
.
sha
,
params
[
:file_path
]
,
literal_pathspec:
true
)
}
end
...
...
lib/gitlab/git/repository.rb
浏览文件 @
1127990d
...
...
@@ -1008,9 +1008,9 @@ module Gitlab
end
end
def
last_commit_for_path
(
sha
,
path
)
def
last_commit_for_path
(
sha
,
path
,
literal_pathspec:
false
)
wrapped_gitaly_errors
do
gitaly_commit_client
.
last_commit_for_path
(
sha
,
path
)
gitaly_commit_client
.
last_commit_for_path
(
sha
,
path
,
literal_pathspec:
literal_pathspec
)
end
end
...
...
lib/gitlab/gitaly_client/commit_service.rb
浏览文件 @
1127990d
...
...
@@ -180,11 +180,12 @@ module Gitlab
end
end
def
last_commit_for_path
(
revision
,
path
)
def
last_commit_for_path
(
revision
,
path
,
literal_pathspec:
false
)
request
=
Gitaly
::
LastCommitForPathRequest
.
new
(
repository:
@gitaly_repo
,
revision:
encode_binary
(
revision
),
path:
encode_binary
(
path
.
to_s
)
path:
encode_binary
(
path
.
to_s
),
literal_pathspec:
literal_pathspec
)
gitaly_commit
=
GitalyClient
.
call
(
@repository
.
storage
,
:commit_service
,
:last_commit_for_path
,
request
,
timeout:
GitalyClient
.
fast_timeout
).
commit
...
...
spec/features/projects/files/user_browses_files_spec.rb
浏览文件 @
1127990d
...
...
@@ -3,6 +3,8 @@
require
"spec_helper"
RSpec
.
describe
"User browses files"
do
include
RepoHelpers
let
(
:fork_message
)
do
"You're not allowed to make changes to this project directly. "
\
"A fork of this project has been created that you can make changes in, so you can submit a merge request."
...
...
@@ -339,6 +341,24 @@ RSpec.describe "User browses files" do
end
end
context
"when browsing a file with glob characters"
do
let
(
:filename
)
{
':wq'
}
let
(
:newrev
)
{
project
.
repository
.
commit
(
'master'
).
sha
}
before
do
create_file_in_repo
(
project
,
'master'
,
'master'
,
filename
,
'Test file'
)
path
=
File
.
join
(
'master'
,
filename
)
visit
(
project_blob_path
(
project
,
path
))
end
it
"shows a raw file content"
do
click_link
(
"Open raw"
)
expect
(
source
).
to
eq
(
""
)
# Body is filled in by gitlab-workhorse
end
end
context
"when browsing a raw file"
do
before
do
path
=
File
.
join
(
RepoHelpers
.
sample_commit
.
id
,
RepoHelpers
.
sample_blob
.
path
)
...
...
spec/features/projects/tree/tree_show_spec.rb
浏览文件 @
1127990d
...
...
@@ -3,6 +3,8 @@
require
'spec_helper'
RSpec
.
describe
'Projects tree'
,
:js
do
include
RepoHelpers
let
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let
(
:gravatar_enabled
)
{
true
}
...
...
@@ -47,6 +49,26 @@ RSpec.describe 'Projects tree', :js do
expect
(
page
).
not_to
have_selector
(
'.flash-alert'
)
end
context
"with a tree that contains glob characters"
do
let
(
:path
)
{
':wq'
}
let
(
:filename
)
{
File
.
join
(
path
,
'test.txt'
)
}
let
(
:newrev
)
{
project
.
repository
.
commit
(
'master'
).
sha
}
let
(
:message
)
{
'Glob characters'
}
before
do
create_file_in_repo
(
project
,
'master'
,
'master'
,
filename
,
'Test file'
,
commit_message:
message
)
visit
project_tree_path
(
project
,
File
.
join
(
'master'
,
path
))
wait_for_requests
end
# Disabled until https://gitlab.com/gitlab-org/gitaly/-/issues/2888 is resolved
xit
"renders tree table without errors"
do
expect
(
page
).
to
have_selector
(
'.tree-item'
)
expect
(
page
).
to
have_content
(
'test.txt'
)
expect
(
page
).
to
have_content
(
message
)
end
end
context
'gravatar disabled'
do
let
(
:gravatar_enabled
)
{
false
}
...
...
spec/models/repository_spec.rb
浏览文件 @
1127990d
...
...
@@ -252,6 +252,21 @@ describe Repository do
end
end
end
context
'with filename with glob characters'
do
let
(
:filename
)
{
':wq'
}
let
(
:newrev
)
{
project
.
repository
.
commit
(
'master'
).
sha
}
before
do
create_file_in_repo
(
project
,
'master'
,
'master'
,
filename
,
'Test file'
)
end
subject
{
repository
.
last_commit_for_path
(
'master'
,
filename
,
literal_pathspec:
true
).
id
}
it
'returns a commit SHA'
do
expect
(
subject
).
to
eq
(
newrev
)
end
end
end
describe
'#last_commit_id_for_path'
do
...
...
@@ -276,6 +291,21 @@ describe Repository do
end
end
end
context
'with filename with glob characters'
do
let
(
:filename
)
{
':wq'
}
let
(
:newrev
)
{
project
.
repository
.
commit
(
'master'
).
sha
}
before
do
create_file_in_repo
(
project
,
'master'
,
'master'
,
filename
,
'Test file'
)
end
subject
{
repository
.
last_commit_id_for_path
(
'master'
,
filename
,
literal_pathspec:
true
)
}
it
'returns a commit SHA'
do
expect
(
subject
).
to
eq
(
newrev
)
end
end
end
describe
'#commits'
do
...
...
spec/requests/api/files_spec.rb
浏览文件 @
1127990d
...
...
@@ -3,6 +3,8 @@
require
'spec_helper'
describe
API
::
Files
do
include
RepoHelpers
let
(
:user
)
{
create
(
:user
)
}
let!
(
:project
)
{
create
(
:project
,
:repository
,
namespace:
user
.
namespace
)
}
let
(
:guest
)
{
create
(
:user
)
{
|
u
|
project
.
add_guest
(
u
)
}
}
...
...
@@ -183,6 +185,26 @@ describe API::Files do
expect
(
response
.
content_type
).
to
eq
(
'application/json'
)
end
context
'with filename with glob characters'
do
let
(
:file_path
)
{
':wq'
}
let
(
:newrev
)
{
project
.
repository
.
commit
(
'master'
).
sha
}
before
do
create_file_in_repo
(
project
,
'master'
,
'master'
,
file_path
,
'Test file'
)
end
it
'returns JSON wth commit SHA'
do
params
[
:ref
]
=
'master'
get
api
(
route
(
file_path
),
api_user
),
params:
params
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
json_response
[
'file_path'
]).
to
eq
(
file_path
)
expect
(
json_response
[
'file_name'
]).
to
eq
(
file_path
)
expect
(
json_response
[
'last_commit_id'
]).
to
eq
(
newrev
)
end
end
it
'returns file by commit sha'
do
# This file is deleted on HEAD
file_path
=
"files%2Fjs%2Fcommit%2Ejs%2Ecoffee"
...
...
spec/services/spam/spam_verdict_service_spec.rb
浏览文件 @
1127990d
...
...
@@ -192,8 +192,8 @@ describe Spam::SpamVerdictService do
context
'the verdict is an unexpected string'
do
let
(
:verdict
)
{
'this is fine'
}
it
'returns
nil
'
do
expect
(
subject
).
to
be_nil
it
'returns
the string
'
do
expect
(
subject
).
to
eq
verdict
end
end
...
...
@@ -209,7 +209,7 @@ describe Spam::SpamVerdictService do
let
(
:verdict
)
{
''
}
it
'returns nil'
do
expect
(
subject
).
to
be_nil
expect
(
subject
).
to
eq
verdict
end
end
...
...
spec/simplecov_env.rb
浏览文件 @
1127990d
...
...
@@ -37,30 +37,34 @@ module SimpleCovEnv
def
configure_profile
SimpleCov
.
configure
do
load_profile
'test_frameworks'
track_files
'{app,
lib
}/**/*.rb'
track_files
'{app,
config,danger,db,haml_lint,lib,qa,rubocop,scripts,tooling
}/**/*.rb'
add_filter
'/vendor/ruby/'
add_filter
'app/controllers/sherlock/'
add_filter
'
config/initializers
/'
add_filter
'db/fixtures/'
add_filter
'lib/gitlab/sidekiq_middleware/'
add_filter
'lib/system_check/'
add_filter
'
/
app/controllers/sherlock/'
add_filter
'
/bin
/'
add_filter
'db/fixtures/'
# Matches EE files as well
add_filter
'
/
lib/gitlab/sidekiq_middleware/'
add_filter
'
/
lib/system_check/'
add_group
'Channels'
,
'app/channels'
add_group
'Controllers'
,
'app/controllers'
add_group
'Finders'
,
'app/finders'
add_group
'GraphQL'
,
'app/graphql'
add_group
'Helpers'
,
'app/helpers'
add_group
'Libraries'
,
'lib'
add_group
'Mailers'
,
'app/mailers'
add_group
'Models'
,
'app/models'
add_group
'Policies'
,
'app/policies'
add_group
'Presenters'
,
'app/presenters'
add_group
'Serializers'
,
'app/serializers'
add_group
'Services'
,
'app/services'
add_group
'Uploaders'
,
'app/uploaders'
add_group
'Validators'
,
'app/validators'
add_group
'Workers'
,
%w(app/jobs app/workers)
add_group
'Channels'
,
'app/channels'
# Matches EE files as well
add_group
'Controllers'
,
'app/controllers'
# Matches EE files as well
add_group
'Finders'
,
'app/finders'
# Matches EE files as well
add_group
'GraphQL'
,
'app/graphql'
# Matches EE files as well
add_group
'Helpers'
,
'app/helpers'
# Matches EE files as well
add_group
'Mailers'
,
'app/mailers'
# Matches EE files as well
add_group
'Models'
,
'app/models'
# Matches EE files as well
add_group
'Policies'
,
'app/policies'
# Matches EE files as well
add_group
'Presenters'
,
'app/presenters'
# Matches EE files as well
add_group
'Serializers'
,
'app/serializers'
# Matches EE files as well
add_group
'Services'
,
'app/services'
# Matches EE files as well
add_group
'Uploaders'
,
'app/uploaders'
# Matches EE files as well
add_group
'Validators'
,
'app/validators'
# Matches EE files as well
add_group
'Workers'
,
%w[app/jobs app/workers]
# Matches EE files as well
add_group
'Initializers'
,
%w[config/initializers config/initializers_before_autoloader]
# Matches EE files as well
add_group
'Migrations'
,
%w[db/migrate db/optional_migrations db/post_migrate]
# Matches EE files as well
add_group
'Libraries'
,
%w[/lib /ee/lib]
add_group
'Tooling'
,
%w[/danger /haml_lint /rubocop /scripts /tooling]
add_group
'QA'
,
'/qa'
merge_timeout
365
.
days
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录