项目导入和导出故障排查
如果您在导入或导出时遇到问题,请使用 Rake 任务来启用调试模式:
# 导入
IMPORT_DEBUG=true gitlab-rake "gitlab:import_export:import[root, group/subgroup, testingprojectimport, /path/to/file_to_import.tar.gz]"
# 导出
EXPORT_DEBUG=true gitlab-rake "gitlab:import_export:export[root, group/subgroup, projectnametoexport, /tmp/export_file.tar.gz]"然后,请查看以下关于特定错误消息的详细信息。
Exception: undefined method 'name' for nil:NilClass
username 无效。
Exception: undefined method 'full_path' for nil:NilClass
namespace_path 不存在。
例如,某个组或子组的名称输入错误或不存在,
或者您在路径中指定了项目名称。
该任务只会创建项目。 如果您想将其导入到新的组或子组中,请先创建该组或子组。
Exception: No such file or directory @ rb_sysopen - (filename)
archive_path 中指定的项目导出文件缺失。
Exception: Permission denied @ rb_sysopen - (filename)
git 用户无法访问指定的项目导出文件。
要解决此问题:
- 将文件所有者设置为
git:git。 - 将文件权限更改为
0400。 - 将文件移动到公共文件夹(例如
/tmp/)。
Name can contain only letters, digits, emoji ...
Name can contain only letters, digits, emoji, '_', '.', '+', dashes, or spaces. It must start with a letter,
digit, emoji, or '_', and Path can contain only letters, digits, '_', '-', or '.'. It cannot start
with '-', end in '.git', or end in '.atom'.由于上述原因之一,project_path 中指定的项目名称无效。
请只在 project_path 中填写项目名称。例如,如果您提供了子组的路径,则会因此错误而失败,因为 / 不是项目名称中的有效字符。
Name has already been taken and Path has already been taken
已存在同名项目。
Exception: Error importing repository into (namespace) - No space left on device
磁盘空间不足,无法完成导入。
导入期间,tarball 文件会缓存在您配置的 shared_path 目录中。请确认磁盘有足够的可用空间,以同时容纳缓存的 tarball 文件和解压后的项目文件。
导入成功,但显示 Total number of not imported relations: XX 消息
如果您收到 Total number of not imported relations: XX 消息,并且在导入过程中未创建 issues,请查看 exceptions_json.log。
您可能会看到类似 N is out of range for ActiveModel::Type::Integer with limit 4 bytes 的错误,
其中 N 是超出 4 字节整数限制的整数值。如果是这种情况,您很可能遇到了 issues 的 relative_position 字段重新平衡的问题。
# 检查 relative_position 的当前最大值
Issue.where(project_id: Project.find(ID).root_namespace.all_projects).maximum(:relative_position)
# 运行重新平衡流程,并检查 relative_position 的最大值是否已更改
Issues::RelativePositionRebalancingService.new(Project.find(ID).root_namespace.all_projects).execute
Issue.where(project_id: Project.find(ID).root_namespace.all_projects).maximum(:relative_position)请重试导入,并检查 issues 是否已成功导入。
导入时出现 Gitaly 调用错误
如果您尝试将大型项目导入到开发环境中,Gitaly 可能会因调用或调用次数过多而抛出错误。例如:
Error importing repository into qa-perf-testing/gitlabhq - GitalyClient#call called 31 times from single request. Potential n+1?此错误是由于开发环境的 n+1 查询调用限制所致。要解决此错误,请将 GITALY_DISABLE_REQUEST_LIMITS=1 设置为环境变量。然后重启您的开发环境并再次导入。