프로젝트 가져오기 및 내보내기 문제 해결

가져오기 또는 내보내기에 문제가 있는 경우, 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]"

그 다음, 특정 오류 메시지에 대한 세부정보를 검토하십시오.

예외: nil:NilClass의 'name'에 대한 정의되지 않은 메서드

username이 유효하지 않습니다.

예외: nil:NilClass의 'full_path'에 대한 정의되지 않은 메서드

namespace_path가 존재하지 않습니다.

예를 들어, 그룹 또는 하위 그룹 중 하나가 잘못 입력되었거나 누락되었거나, 경로에 프로젝트 이름을 지정했습니다.

작업은 프로젝트만 생성합니다.

새 그룹이나 하위 그룹에 가져오려면 먼저 생성하십시오.

예외: 해당 파일 또는 디렉토리가 없음 @ rb_sysopen - (filename)

archive_path에 지정된 프로젝트 내보내기 파일이 누락되었습니다.

예외: 권한 거부 @ rb_sysopen - (filename)

지정된 프로젝트 내보내기 파일에 git 사용자가 접근할 수 없습니다.

문제를 해결하려면:

  1. 파일 소유자를 git:git으로 설정하십시오.

  2. 파일 권한을 0400으로 변경하십시오.

  3. 파일을 공용 폴더로 이동하십시오 (예: /tmp/).

이름은 문자, 숫자, 이모지 ...만 포함할 수 있습니다

이름은 문자, 숫자, 이모지, '_', '.', '+', 대시 또는 공백만 포함할 수 있습니다. 문자, 숫자, 이모지 또는 '_'로 시작해야 하며, 경로는 문자, 숫자, '_', '-' 또는 '.'만 포함할 수 있습니다. '-'로 시작할 수 없고, '.git'이나 '.atom'으로 끝나지 않아야 합니다.

project_path에 지정된 프로젝트 이름이 위의 지정된 이유 중 하나로 유효하지 않습니다.

프로젝트 이름만 project_path에 넣으십시오.

예를 들어, 하위 그룹의 경로를 제공하면 /가 프로젝트 이름에서 유효한 문자가 아니므로 이 오류가 발생합니다.

이름이 이미 사용 중이며 경로가 이미 사용 중입니다

해당 이름을 가진 프로젝트가 이미 존재합니다.

예외: (namespace)로의 저장소 가져오기 오류 - 장치에 여유 공간이 없음

디스크에 가져오기를 완료할 수 있는 충분한 공간이 없습니다.

가져오는 동안, tarball은 구성된 shared_path 디렉토리에 캐시됩니다.

디스크에 캐시된 tarball과 풀린 프로젝트 파일을 수용할 수 있는 충분한 여유 공간이 있는지 확인하십시오.

총 가져오지 않은 관계 수: XX 메시지와 함께 가져오기 성공

총 가져오지 않은 관계 수: XX 메시지를 받고 가져오는 동안 문제가 생성되지 않으면 exceptions_json.log를 확인하십시오.

N이 4바이트 정수 한계를 초과하는 정수를 나타내는 오류를 볼 수 있습니다.

이 경우 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)

가져오기 시도를 반복하고 문제가 성공적으로 가져와졌는지 확인하십시오.

Gitaly 호출 오류 시 가져오기

큰 프로젝트를 개발 환경으로 가져오려는 경우, Gitaly에서 호출이나 호출 수가 너무 많다는 오류를 발생할 수 있습니다. 예를 들어:

qa-perf-testing/gitlabhq에 리포지토리를 가져오는 중 오류 - GitalyClient#call이 단일 요청에서 31번 호출되었습니다. 잠재적인 n+1?

이 오류는 개발 설정의 n+1 호출 제한으로 인해 발생합니다. 이 오류를 해결하려면 환경 변수로 GITALY_DISABLE_REQUEST_LIMITS=1을 설정합니다. 그런 다음 개발 환경을 재시작하고 다시 가져옵니다.