Help us learn about your current experience with the documentation. Take the survey.
项目故障排除
在使用项目时,你可能会遇到以下问题,或者需要使用其他方法来完成特定任务。
获取提交数据时发生错误
当你访问项目时,如果浏览器使用了广告拦截器,可能会显示 获取提交数据时发生错误 的消息。解决方案是为你要访问的 GitLab 实例禁用广告拦截器。
使用 SQL 查询查找项目
在 Rails 控制台会话 中,你可以根据 SQL 查询查找并存储一个项目数组:
# 查找以 '%ject' 结尾的项目
projects = Project.find_by_sql("SELECT * FROM projects WHERE name LIKE '%ject'")
=> [#<Project id:12 root/my-first-project>>, #<Project id:13 root/my-second-project>>]清除项目或仓库的缓存
如果项目或仓库已更新但状态未在 UI 中反映,你可能需要清除项目或仓库的缓存。你可以通过 Rails 控制台会话 和以下方法之一来实现:
更改数据的命令如果未正确运行或在适当条件下运行,可能会造成损害。始终先在测试环境中运行命令,并准备好备份实例以进行恢复。
## 清除项目缓存
ProjectCacheWorker.perform_async(project.id)
## 清除仓库 .exists? 缓存
project.repository.expire_exists_cache查找待删除的项目
如果你需要查找所有标记为删除但尚未删除的项目,启动 Rails 控制台会话 并运行以下命令:
projects = Project.where(pending_delete: true)
projects.each do |p|
puts "项目 ID: #{p.id}"
puts "项目名称: #{p.name}"
puts "仓库路径: #{p.repository.full_path}"
end使用控制台转移项目
如果通过 UI 或 API 转移项目不起作用,你可以尝试在 Rails 控制台会话 中进行转移。
p = Project.find_by_full_path('<project_path>')
# 设置项目所有者
current_user = p.creator
# 你想要移动到的命名空间
namespace = Namespace.find_by_full_path("<new_namespace>")
Projects::TransferService.new(p, current_user).execute(namespace)使用控制台删除项目
如果项目无法删除,你可以尝试通过 Rails 控制台 删除它。
更改数据的命令如果未正确运行或在适当条件下运行,可能会造成损害。始终先在测试环境中运行命令,并准备好备份实例以进行恢复。
project = Project.find_by_full_path('<project_path>')
user = User.find_by_username('<username>')
Projects::DestroyService.new(project, user, {}).execute如果这不起作用,使用以下命令显示为什么它不起作用:
project = Project.find_by_full_path('<project_path>')
project.delete_error为组内的所有项目切换功能
虽然可以通过 projects API 切换项目中的功能,但你可能需要对大量项目执行此操作。
要切换特定功能,你可以 启动 Rails 控制台会话 并运行以下函数:
更改数据的命令如果未正确运行或在适当条件下运行,可能会造成损害。始终先在测试环境中运行命令,并准备好备份实例以进行恢复。
projects = Group.find_by_name('_group_name').projects
projects.each do |p|
## 在所有实例中将 <feature-name> 替换为适当的功能名称
state = p.<feature-name>
if state != 0
puts "#{p.name} 已经启用了 <feature-name>。跳过..."
else
puts "#{p.name} 没有启用 <feature-name>。正在启用..."
p.project_feature.update!(<feature-name>: ProjectFeature::PRIVATE)
end
end要查找可以切换的功能,运行 pp p.project_feature。可用的权限级别列在 concerns/featurable.rb 中。