diff options
author | Robert Speicher <rspeicher@gmail.com> | 2018-05-23 09:54:07 -0500 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2018-05-23 09:54:07 -0500 |
commit | c33c9bf6f3e844494823ecaf9be4c9cff66903ec (patch) | |
tree | 798e6b0897efd618b768085815394ea5c0c60c2e | |
parent | a2dbca4a27b8f380652bf1165f89238895b0f5d8 (diff) | |
download | gitlab-ce-c33c9bf6f3e844494823ecaf9be4c9cff66903ec.tar.gz |
Bring CE-EE parity to app/services/projects/destroy_service.rbrs-projects-destroy-service-parity
-rw-r--r-- | app/services/projects/destroy_service.rb | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb index adbc498d0bf..077d27c5836 100644 --- a/app/services/projects/destroy_service.rb +++ b/app/services/projects/destroy_service.rb @@ -51,11 +51,11 @@ module Projects flush_caches(@project) - unless mv_repository(removal_path(repo_path), repo_path) + unless rollback_repository(removal_path(repo_path), repo_path) raise_error('Failed to restore project repository. Please contact the administrator.') end - unless mv_repository(removal_path(wiki_path), wiki_path) + unless rollback_repository(removal_path(wiki_path), wiki_path) raise_error('Failed to restore wiki repository. Please contact the administrator.') end end @@ -84,6 +84,9 @@ module Projects # Skip repository removal. We use this flag when remove user or group return true if params[:skip_repo] == true + # There is a possibility project does not have repository or wiki + return true unless repo_exists?(path) + new_path = removal_path(path) if mv_repository(path, new_path) @@ -98,8 +101,18 @@ module Projects end end - def mv_repository(from_path, to_path) + def rollback_repository(old_path, new_path) # There is a possibility project does not have repository or wiki + return true unless repo_exists?(old_path) + + mv_repository(old_path, new_path) + end + + def repo_exists?(path) + gitlab_shell.exists?(project.repository_storage, path + '.git') + end + + def mv_repository(from_path, to_path) return true unless gitlab_shell.exists?(project.repository_storage, from_path + '.git') gitlab_shell.mv_repository(project.repository_storage, from_path, to_path) |