Merge pull request !2922 from rhodecode-enterprise-ce feature/RCCE-360__Repo-deletion

feature: implements the feature to delete a repository completely or leave backup
This commit is contained in:
Andrii Verbytskyi 2025-12-23 12:01:57 +00:00
commit d61a7389cb
8 changed files with 137 additions and 36 deletions

View file

@ -23,7 +23,7 @@ import tempfile
from rhodecode.lib.exceptions import AttachedForksError
from rhodecode.lib.utils import make_db_config
from rhodecode.lib.utils import make_db_config, get_rhodecode_repo_store_path
from rhodecode.model.db import Repository
from rhodecode.model.meta import Session
from rhodecode.model.repo import RepoModel, ForksAction
@ -42,6 +42,34 @@ class TestRepoModel(object):
assert Repository.get_by_repo_name(repo_name=backend.repo_name) is None
assert repo.repo_name not in repos
def test_remove_repo_with_backup(self, backend):
repo = backend.create_repo()
Session().commit()
RepoModel().delete(repo=repo)
Session().commit()
assert Repository.get_by_repo_name(repo_name=backend.repo_name) is None
assert repo.repo_name in self._list_removed_repos_folders_only()
def test_remove_repo_without_backup(self, backend):
repo = backend.create_repo()
Session().commit()
RepoModel().delete(repo=repo, fs_backup=False)
Session().commit()
assert Repository.get_by_repo_name(repo_name=backend.repo_name) is None
assert repo.repo_name not in self._list_removed_repos_folders_only()
def _list_removed_repos_folders_only(self):
temp_folder_with_repos = get_rhodecode_repo_store_path()
res = []
for r in os.listdir(temp_folder_with_repos):
if r.startswith("rm__"):
removed_repo_name = r.split("__", 2)[-1]
res.append(removed_repo_name)
return res
def test_remove_repo_forks_are_detached(self, backend):
repo = backend.create_repo()
Session().commit()