Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
cc28abea
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,发现更多精彩内容 >>
提交
cc28abea
编写于
9月 05, 2017
作者:
G
Gabriel Mazetto
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Detect orphaned repositories and namespaces in any storage
上级
021724ee
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
117 addition
and
0 deletion
+117
-0
lib/system_check/orphans/namespace_check.rb
lib/system_check/orphans/namespace_check.rb
+37
-0
lib/system_check/orphans/repository_check.rb
lib/system_check/orphans/repository_check.rb
+50
-0
lib/tasks/gitlab/check.rake
lib/tasks/gitlab/check.rake
+30
-0
未找到文件。
lib/system_check/orphans/namespace_check.rb
0 → 100644
浏览文件 @
cc28abea
module
SystemCheck
module
Orphans
class
NamespaceCheck
<
SystemCheck
::
BaseCheck
set_name
'Orphaned namespaces:'
def
multi_check
Gitlab
.
config
.
repositories
.
storages
.
each
do
|
name
,
repository_storage
|
$stdout
.
puts
$stdout
.
puts
"* Storage:
#{
name
}
(
#{
repository_storage
[
'path'
]
}
)"
.
color
(
:yellow
)
toplevel_namespace_dirs
=
Dir
.
glob
(
File
.
join
(
repository_storage
[
'path'
],
'*'
)).
map
{
|
p
|
File
.
basename
(
p
)}
orphans
=
(
toplevel_namespace_dirs
-
existing_namespaces
)
if
orphans
.
empty?
$stdout
.
puts
"* No orphaned namespaces for
#{
name
}
storage"
.
color
(
:green
)
next
end
orphans
.
each
do
|
orphan
|
$stdout
.
puts
" -
#{
orphan
}
"
.
color
(
:red
)
end
end
clear_namespaces!
# releases memory when check finishes
end
private
def
existing_namespaces
@namespaces
||=
Namespace
.
all
.
pluck
(
:path
)
end
def
clear_namespaces!
@namespaces
=
nil
end
end
end
end
lib/system_check/orphans/repository_check.rb
0 → 100644
浏览文件 @
cc28abea
module
SystemCheck
module
Orphans
class
RepositoryCheck
<
SystemCheck
::
BaseCheck
set_name
'Orphaned repositories:'
def
multi_check
Gitlab
.
config
.
repositories
.
storages
.
each
do
|
name
,
repository_storage
|
$stdout
.
puts
$stdout
.
puts
"* Storage:
#{
name
}
(
#{
repository_storage
[
'path'
]
}
)"
.
color
(
:yellow
)
repositories
=
toplevel_namespace_dirs
(
repository_storage
[
'path'
]).
map
do
|
path
|
namespace
=
File
.
basename
(
path
)
Dir
.
glob
(
File
.
join
(
path
,
'*'
)).
map
{
|
repo
|
"
#{
namespace
}
/
#{
File
.
basename
(
repo
)
}
"
}
end
.
try
(
:flatten!
)
orphans
=
(
repositories
-
list_repositories
(
name
))
if
orphans
.
empty?
$stdout
.
puts
"* No orphaned repositories for
#{
name
}
storage"
.
color
(
:green
)
next
end
orphans
.
each
do
|
orphan
|
$stdout
.
puts
" -
#{
orphan
}
"
.
color
(
:red
)
end
end
end
private
def
list_repositories
(
storage_name
)
sql
=
"
SELECT
CONCAT(n.path, '/', p.path, '.git') repo,
CONCAT(n.path, '/', p.path, '.wiki.git') wiki
FROM projects p
JOIN namespaces n
ON (p.namespace_id = n.id)
WHERE (p.repository_storage LIKE ?)
"
query
=
ActiveRecord
::
Base
.
send
(
:sanitize_sql_array
,
[
sql
,
storage_name
])
ActiveRecord
::
Base
.
connection
.
select_all
(
query
).
rows
.
try
(
:flatten!
)
end
def
toplevel_namespace_dirs
(
storage_path
)
Dir
.
glob
(
File
.
join
(
storage_path
,
'*'
))
end
end
end
end
lib/tasks/gitlab/check.rake
浏览文件 @
cc28abea
...
...
@@ -398,6 +398,36 @@ namespace :gitlab do
end
end
namespace
:orphans
do
desc
'Gitlab | Check for orphaned namespaces and repositories'
task
check: :environment
do
warn_user_is_not_gitlab
checks
=
[
SystemCheck
::
Orphans
::
NamespaceCheck
,
SystemCheck
::
Orphans
::
RepositoryCheck
]
SystemCheck
.
run
(
'Orphans'
,
checks
)
end
desc
'GitLab | Check for orphaned namespaces in the repositories path'
task
check_namespaces: :environment
do
warn_user_is_not_gitlab
checks
=
[
SystemCheck
::
Orphans
::
NamespaceCheck
]
SystemCheck
.
run
(
'Orphans'
,
checks
)
end
desc
'GitLab | Check for orphaned repositories in the repositories path'
task
check_repositories: :environment
do
warn_user_is_not_gitlab
checks
=
[
SystemCheck
::
Orphans
::
RepositoryCheck
]
SystemCheck
.
run
(
'Orphans'
,
checks
)
end
end
namespace
:user
do
desc
"GitLab | Check the integrity of a specific user's repositories"
task
:check_repos
,
[
:username
]
=>
:environment
do
|
t
,
args
|
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录