Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
6f26f6f7
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,发现更多精彩内容 >>
提交
6f26f6f7
编写于
7月 17, 2017
作者:
B
Bob Van Landuyt
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Allow groups with the name system
上级
6a10626f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
9 addition
and
31 deletion
+9
-31
lib/gitlab/background_migration/migrate_system_uploads_to_new_folder.rb
...kground_migration/migrate_system_uploads_to_new_folder.rb
+8
-29
lib/gitlab/path_regex.rb
lib/gitlab/path_regex.rb
+0
-1
spec/models/namespace_spec.rb
spec/models/namespace_spec.rb
+1
-1
未找到文件。
lib/gitlab/background_migration/migrate_system_uploads_to_new_folder.rb
浏览文件 @
6f26f6f7
...
...
@@ -4,44 +4,23 @@ module Gitlab
include
Gitlab
::
Database
::
MigrationHelpers
attr_reader
:old_folder
,
:new_folder
def
perform
(
old_folder
,
new_folder
)
@old_folder
=
old_folder
@new_folder
=
new_folder
class
Upload
<
ActiveRecord
::
Base
self
.
table_name
=
'uploads'
include
EachBatch
end
def
perform
(
old_folder
,
new_folder
)
replace_sql
=
replace_sql
(
uploads
[
:path
],
old_folder
,
new_folder
)
affected_uploads
=
Upload
.
where
(
uploads
[
:path
].
matches
(
"
#{
old_folder
}
%"
))
while
remaining_rows
>
0
sql
=
"UPDATE uploads "
\
"SET path =
#{
replace_sql
}
"
\
"WHERE uploads.id IN "
\
" (SELECT uploads.id FROM uploads "
\
" WHERE
#{
affected_uploads
.
to_sql
}
LIMIT 1000)"
connection
.
execute
(
sql
)
affected_uploads
.
each_batch
do
|
batch
|
batch
.
update_all
(
"path =
#{
replace_sql
}
"
)
end
end
def
uploads
Arel
::
Table
.
new
(
'uploads'
)
end
def
remaining_rows
remaining_result
=
connection
.
exec_query
(
"SELECT count(id) FROM uploads WHERE
#{
affected_uploads
.
to_sql
}
"
)
remaining
=
remaining_result
.
first
[
'count'
].
to_i
logger
.
info
"
#{
remaining
}
uploads remaining"
remaining
end
def
affected_uploads
uploads
[
:path
].
matches
(
"
#{
old_folder
}
%"
)
end
def
connection
ActiveRecord
::
Base
.
connection
end
def
logger
Sidekiq
.
logger
||
Rails
.
logger
||
Logger
.
new
(
STDOUT
)
end
end
end
end
lib/gitlab/path_regex.rb
浏览文件 @
6f26f6f7
...
...
@@ -49,7 +49,6 @@ module Gitlab
sent_notifications
services
snippets
system
teams
u
unicorn_test
...
...
spec/models/namespace_spec.rb
浏览文件 @
6f26f6f7
...
...
@@ -44,7 +44,7 @@ describe Namespace, models: true do
end
context
"is case insensitive"
do
let
(
:group
)
{
build
(
:group
,
path:
"
System
"
)
}
let
(
:group
)
{
build
(
:group
,
path:
"
Groups
"
)
}
it
{
expect
(
group
).
not_to
be_valid
}
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录