##// END OF EJS Templates
docs: added example for bulk delete repositories with cleanup options
marcink -
r3879:d31f2865 default
parent child Browse files
Show More
@@ -12,13 +12,50 b' Here is how to force delete a repository'
12 12
13 13
14 14 .. code-block:: bash
15 :dedent: 1
15 16
16 17 # starts the ishell interactive prompt
17 18 $ rccontrol ishell enterprise-1
18 19
19 20 .. code-block:: python
21 :dedent: 1
20 22
21 23 In [4]: from rhodecode.model.repo import RepoModel
22 24 In [3]: repo = Repository.get_by_repo_name('test_repos/repo_with_prs')
23 25 In [5]: RepoModel().delete(repo, forks='detach', pull_requests='delete')
24 26 In [6]: Session().commit()
27
28
29 Below is a fully automated example to force delete repositories reading from a
30 file where each line is a repository name. This can be executed via simple CLI command
31 without entering the interactive shell.
32
33 Save the below content as a file named `repo_delete_task.py`
34
35
36 .. code-block:: python
37 :dedent: 1
38
39 from rhodecode.model.db import *
40 from rhodecode.model.repo import RepoModel
41 with open('delete_repos.txt', 'rb') as f:
42 # read all lines from file
43 repos = f.readlines()
44 for repo_name in repos:
45 repo_name = repo_name.strip() # cleanup the name just in case
46 repo = Repository.get_by_repo_name(repo_name)
47 if not repo:
48 raise Exception('Repo with name {} not found'.format(repo_name))
49 RepoModel().delete(repo, forks='detach', pull_requests='delete')
50 Session().commit()
51 print('Removed repository {}'.format(repo_name))
52
53
54 The code above will read the names of repositories from a file called `delete_repos.txt`
55 Each lines should represent a single name e.g `repo_name_1` or `repo_group/repo_name_2`
56
57 Run this line from CLI to execute the code from the `repo_delete_task.py` file and
58 exit the ishell after the execution::
59
60 echo "%run repo_delete_task.py" | rccontrol ishell Enterprise-1
61
General Comments 0
You need to be logged in to leave comments. Login now