gitlabber 1.2.1__tar.gz → 1.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gitlabber-1.2.1/gitlabber.egg-info → gitlabber-1.2.2}/PKG-INFO +44 -37
- {gitlabber-1.2.1 → gitlabber-1.2.2}/README.rst +36 -36
- gitlabber-1.2.2/gitlabber/__init__.py +1 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber/gitlab_tree.py +5 -8
- {gitlabber-1.2.1 → gitlabber-1.2.2/gitlabber.egg-info}/PKG-INFO +44 -37
- gitlabber-1.2.1/gitlabber/__init__.py +0 -1
- {gitlabber-1.2.1 → gitlabber-1.2.2}/LICENSE.txt +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/MANIFEST.in +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber/__main__.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber/archive.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber/cli.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber/format.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber/git.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber/method.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber/naming.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber/progress.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber.egg-info/SOURCES.txt +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber.egg-info/dependency_links.txt +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber.egg-info/entry_points.txt +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber.egg-info/requires.txt +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/gitlabber.egg-info/top_level.txt +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/setup.cfg +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/setup.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__init__.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/__init__.cpython-311.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/gitlab_test_utils.cpython-311.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/io_test_util.cpython-311.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_archive.cpython-311-pytest-8.2.2.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_cli.cpython-311-pytest-8.2.2.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_e2e.cpython-311-pytest-8.2.2.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_format.cpython-311-pytest-8.2.2.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_git.cpython-311-pytest-8.2.2.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_gitlab_tree.cpython-311-pytest-8.2.2.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_integration.cpython-311-pytest-8.2.2.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_method.cpython-311-pytest-8.2.2.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_naming.cpython-311-pytest-8.2.2.pyc +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/gitlab_test_utils.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/io_test_util.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test-input.yaml +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test-output.json +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test-output.tree +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test-output.yaml +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test_archive.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test_cli.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test_e2e.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test_format.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test_git.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test_gitlab_tree.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test_integration.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test_method.py +0 -0
- {gitlabber-1.2.1 → gitlabber-1.2.2}/tests/test_naming.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: gitlabber
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: A Gitlab clone/pull utility for backing up or cloning Gitlab groups
|
|
5
5
|
Home-page: https://github.com/ezbz/gitlabber
|
|
6
6
|
Download-URL: https://github.com/ezbz/gitlabber/archive/master.zip
|
|
@@ -23,6 +23,13 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
23
23
|
Requires-Python: >=3
|
|
24
24
|
Description-Content-Type: text/markdown
|
|
25
25
|
License-File: LICENSE.txt
|
|
26
|
+
Requires-Dist: docopt
|
|
27
|
+
Requires-Dist: anytree
|
|
28
|
+
Requires-Dist: globre
|
|
29
|
+
Requires-Dist: pyyaml
|
|
30
|
+
Requires-Dist: tqdm
|
|
31
|
+
Requires-Dist: GitPython
|
|
32
|
+
Requires-Dist: python-gitlab
|
|
26
33
|
|
|
27
34
|
.. image:: https://github.com/ezbz/gitlabber/actions/workflows/python-app.yml/badge.svg?branch=master
|
|
28
35
|
:target: https://github.com/ezbz/gitlabber/actions/workflows/python-app.yml
|
|
@@ -42,6 +49,7 @@ License-File: LICENSE.txt
|
|
|
42
49
|
.. image:: https://readthedocs.org/projects/gitlabber/badge/?version=latest&style=plastic
|
|
43
50
|
:target: https://gitlabber.readthedocs.io/en/latest/README.html
|
|
44
51
|
|
|
52
|
+
|
|
45
53
|
Gitlabber
|
|
46
54
|
=========
|
|
47
55
|
|
|
@@ -111,62 +119,61 @@ Usage
|
|
|
111
119
|
|
|
112
120
|
.. code-block:: bash
|
|
113
121
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
[-x csv] [--version] [-g {id,full_path,full_name}]
|
|
117
|
-
[dest]
|
|
118
|
-
|
|
119
|
-
Gitlabber - clones or pulls entire groups/projects tree from GitLab
|
|
122
|
+
usage: gitlabber [-h] [-t token] [-T] [-u url] [--verbose] [-p] [--print-format {json,yaml,tree}] [-n {name,path}] [-m {ssh,http}] [-a {include,exclude,only}] [-i csv] [-x csv] [-r] [-F] [-d] [-s] [--version]
|
|
123
|
+
[dest]
|
|
120
124
|
|
|
125
|
+
Gitlabber - clones or pulls entire groups/projects tree from gitlab
|
|
126
|
+
|
|
121
127
|
positional arguments:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
dest destination path for the cloned tree (created if doesn't exist)
|
|
129
|
+
|
|
130
|
+
options:
|
|
131
|
+
-h, --help show this help message and exit
|
|
132
|
+
-t token, --token token
|
|
127
133
|
gitlab personal access token https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
134
|
+
-T, --hide-token use an inline URL token (avoids storing the gitlab personal access token in the .git/config)
|
|
135
|
+
-u url, --url url base gitlab url (e.g.: 'http://gitlab.mycompany.com')
|
|
136
|
+
--verbose print more verbose output
|
|
137
|
+
-p, --print print the tree without cloning
|
|
138
|
+
--print-format {json,yaml,tree}
|
|
132
139
|
print format (default: 'tree')
|
|
133
|
-
|
|
134
|
-
the folder naming strategy for projects (default: "name")
|
|
135
|
-
|
|
140
|
+
-n {name,path}, --naming {name,path}
|
|
141
|
+
the folder naming strategy for projects from the gitlab API attributes (default: "name")
|
|
142
|
+
-m {ssh,http}, --method {ssh,http}
|
|
136
143
|
the git transport method to use for cloning (default: "ssh")
|
|
137
|
-
|
|
144
|
+
-a {include,exclude,only}, --archived {include,exclude,only}
|
|
138
145
|
include archived projects and groups in the results (default: "include")
|
|
139
|
-
|
|
146
|
+
-i csv, --include csv
|
|
140
147
|
comma delimited list of glob patterns of paths to projects or groups to clone/pull
|
|
141
|
-
|
|
148
|
+
-x csv, --exclude csv
|
|
142
149
|
comma delimited list of glob patterns of paths to projects or groups to exclude from clone/pull
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
150
|
+
-r, --recursive clone/pull git submodules recursively
|
|
151
|
+
-F, --use-fetch clone/fetch git repository (mirrored repositories)
|
|
152
|
+
-d, --dont-checkout don't checkout pulled git repository
|
|
153
|
+
-s, --include-shared include shared projects in the results
|
|
154
|
+
--version print the version
|
|
155
|
+
|
|
149
156
|
examples:
|
|
150
|
-
|
|
151
|
-
clone an entire gitlab tree using a
|
|
152
|
-
gitlabber -t <personal access token> -u <gitlab url>
|
|
153
|
-
|
|
154
|
-
# the following examples assume you provided token/url in environment variables so these arguments are omitted
|
|
157
|
+
|
|
158
|
+
clone an entire gitlab tree using a url and a token:
|
|
159
|
+
gitlabber -t <personal access token> -u <gitlab url>
|
|
160
|
+
|
|
155
161
|
only print the gitlab tree:
|
|
156
162
|
gitlabber -p .
|
|
157
|
-
|
|
163
|
+
|
|
158
164
|
clone only projects under subgroup 'MySubGroup' to location '~/GitlabRoot':
|
|
159
165
|
gitlabber -i '/MyGroup/MySubGroup**' ~/GitlabRoot
|
|
160
|
-
|
|
166
|
+
|
|
161
167
|
clone only projects under group 'MyGroup' excluding any projects under subgroup 'MySubGroup':
|
|
162
168
|
gitlabber -i '/MyGroup**' -x '/MyGroup/MySubGroup**' .
|
|
163
|
-
|
|
169
|
+
|
|
164
170
|
clone an entire gitlab tree except projects under groups named 'ArchiveGroup':
|
|
165
171
|
gitlabber -x '/ArchiveGroup**' .
|
|
166
|
-
|
|
172
|
+
|
|
167
173
|
clone projects that start with a case insensitive 'w' using a regular expression:
|
|
168
174
|
gitlabber -i '/{[w].*}' .
|
|
169
175
|
|
|
176
|
+
|
|
170
177
|
Debugging
|
|
171
178
|
---------
|
|
172
179
|
* You can use the `--verbose` flag to print Gitlabber debug messages
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
.. image:: https://readthedocs.org/projects/gitlabber/badge/?version=latest&style=plastic
|
|
17
17
|
:target: https://gitlabber.readthedocs.io/en/latest/README.html
|
|
18
18
|
|
|
19
|
+
|
|
19
20
|
Gitlabber
|
|
20
21
|
=========
|
|
21
22
|
|
|
@@ -85,62 +86,61 @@ Usage
|
|
|
85
86
|
|
|
86
87
|
.. code-block:: bash
|
|
87
88
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
[-x csv] [--version] [-g {id,full_path,full_name}]
|
|
91
|
-
[dest]
|
|
92
|
-
|
|
93
|
-
Gitlabber - clones or pulls entire groups/projects tree from GitLab
|
|
89
|
+
usage: gitlabber [-h] [-t token] [-T] [-u url] [--verbose] [-p] [--print-format {json,yaml,tree}] [-n {name,path}] [-m {ssh,http}] [-a {include,exclude,only}] [-i csv] [-x csv] [-r] [-F] [-d] [-s] [--version]
|
|
90
|
+
[dest]
|
|
94
91
|
|
|
92
|
+
Gitlabber - clones or pulls entire groups/projects tree from gitlab
|
|
93
|
+
|
|
95
94
|
positional arguments:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
95
|
+
dest destination path for the cloned tree (created if doesn't exist)
|
|
96
|
+
|
|
97
|
+
options:
|
|
98
|
+
-h, --help show this help message and exit
|
|
99
|
+
-t token, --token token
|
|
101
100
|
gitlab personal access token https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
-T, --hide-token use an inline URL token (avoids storing the gitlab personal access token in the .git/config)
|
|
102
|
+
-u url, --url url base gitlab url (e.g.: 'http://gitlab.mycompany.com')
|
|
103
|
+
--verbose print more verbose output
|
|
104
|
+
-p, --print print the tree without cloning
|
|
105
|
+
--print-format {json,yaml,tree}
|
|
106
106
|
print format (default: 'tree')
|
|
107
|
-
|
|
108
|
-
the folder naming strategy for projects (default: "name")
|
|
109
|
-
|
|
107
|
+
-n {name,path}, --naming {name,path}
|
|
108
|
+
the folder naming strategy for projects from the gitlab API attributes (default: "name")
|
|
109
|
+
-m {ssh,http}, --method {ssh,http}
|
|
110
110
|
the git transport method to use for cloning (default: "ssh")
|
|
111
|
-
|
|
111
|
+
-a {include,exclude,only}, --archived {include,exclude,only}
|
|
112
112
|
include archived projects and groups in the results (default: "include")
|
|
113
|
-
|
|
113
|
+
-i csv, --include csv
|
|
114
114
|
comma delimited list of glob patterns of paths to projects or groups to clone/pull
|
|
115
|
-
|
|
115
|
+
-x csv, --exclude csv
|
|
116
116
|
comma delimited list of glob patterns of paths to projects or groups to exclude from clone/pull
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
117
|
+
-r, --recursive clone/pull git submodules recursively
|
|
118
|
+
-F, --use-fetch clone/fetch git repository (mirrored repositories)
|
|
119
|
+
-d, --dont-checkout don't checkout pulled git repository
|
|
120
|
+
-s, --include-shared include shared projects in the results
|
|
121
|
+
--version print the version
|
|
122
|
+
|
|
123
123
|
examples:
|
|
124
|
-
|
|
125
|
-
clone an entire gitlab tree using a
|
|
126
|
-
gitlabber -t <personal access token> -u <gitlab url>
|
|
127
|
-
|
|
128
|
-
# the following examples assume you provided token/url in environment variables so these arguments are omitted
|
|
124
|
+
|
|
125
|
+
clone an entire gitlab tree using a url and a token:
|
|
126
|
+
gitlabber -t <personal access token> -u <gitlab url>
|
|
127
|
+
|
|
129
128
|
only print the gitlab tree:
|
|
130
129
|
gitlabber -p .
|
|
131
|
-
|
|
130
|
+
|
|
132
131
|
clone only projects under subgroup 'MySubGroup' to location '~/GitlabRoot':
|
|
133
132
|
gitlabber -i '/MyGroup/MySubGroup**' ~/GitlabRoot
|
|
134
|
-
|
|
133
|
+
|
|
135
134
|
clone only projects under group 'MyGroup' excluding any projects under subgroup 'MySubGroup':
|
|
136
135
|
gitlabber -i '/MyGroup**' -x '/MyGroup/MySubGroup**' .
|
|
137
|
-
|
|
136
|
+
|
|
138
137
|
clone an entire gitlab tree except projects under groups named 'ArchiveGroup':
|
|
139
138
|
gitlabber -x '/ArchiveGroup**' .
|
|
140
|
-
|
|
139
|
+
|
|
141
140
|
clone projects that start with a case insensitive 'w' using a regular expression:
|
|
142
141
|
gitlabber -i '/{[w].*}' .
|
|
143
142
|
|
|
143
|
+
|
|
144
144
|
Debugging
|
|
145
145
|
---------
|
|
146
146
|
* You can use the `--verbose` flag to print Gitlabber debug messages
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.2.2'
|
|
@@ -55,9 +55,8 @@ class GitlabTree:
|
|
|
55
55
|
'''
|
|
56
56
|
if self.includes is not None:
|
|
57
57
|
for include in self.includes:
|
|
58
|
+
log.debug(f"Checking requested include: {include} with path: {node.root_path}, match {globre.match(include, node.root_path)}")
|
|
58
59
|
if globre.match(include, node.root_path):
|
|
59
|
-
log.debug(
|
|
60
|
-
"Matched include path [%s] to node [%s]", include, node.root_path)
|
|
61
60
|
return True
|
|
62
61
|
else:
|
|
63
62
|
return True
|
|
@@ -70,10 +69,10 @@ class GitlabTree:
|
|
|
70
69
|
'''
|
|
71
70
|
if self.excludes is not None:
|
|
72
71
|
for exclude in self.excludes:
|
|
72
|
+
log.debug(f"Checking requested exclude: {exclude} with path: {node.root_path}, match {globre.match(exclude, node.root_path)}")
|
|
73
73
|
if globre.match(exclude, node.root_path):
|
|
74
|
-
log.debug(
|
|
75
|
-
"Matched exclude path [%s] to node [%s]", exclude, node.root_path)
|
|
76
74
|
return True
|
|
75
|
+
|
|
77
76
|
return False
|
|
78
77
|
|
|
79
78
|
def filter_tree(self, parent):
|
|
@@ -122,7 +121,7 @@ class GitlabTree:
|
|
|
122
121
|
log.error(f"Error getting projects on {group.name} (ID: {group.id}): {error} )")
|
|
123
122
|
|
|
124
123
|
def get_subgroups(self, group, parent):
|
|
125
|
-
subgroups = group.subgroups.list(as_list=False, archived=self.archived)
|
|
124
|
+
subgroups = group.subgroups.list(as_list=False, archived=self.archived, get_all=True)
|
|
126
125
|
self.progress.update_progress_length(len(subgroups))
|
|
127
126
|
for subgroup_def in subgroups:
|
|
128
127
|
try:
|
|
@@ -139,10 +138,8 @@ class GitlabTree:
|
|
|
139
138
|
else:
|
|
140
139
|
raise error
|
|
141
140
|
|
|
142
|
-
|
|
143
|
-
|
|
144
141
|
def load_gitlab_tree(self):
|
|
145
|
-
groups = self.gitlab.groups.list(as_list=False, archived=self.archived)
|
|
142
|
+
groups = self.gitlab.groups.list(as_list=False, archived=self.archived, get_all=True)
|
|
146
143
|
self.progress.init_progress(len(groups))
|
|
147
144
|
for group in groups:
|
|
148
145
|
if group.parent_id is None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: gitlabber
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: A Gitlab clone/pull utility for backing up or cloning Gitlab groups
|
|
5
5
|
Home-page: https://github.com/ezbz/gitlabber
|
|
6
6
|
Download-URL: https://github.com/ezbz/gitlabber/archive/master.zip
|
|
@@ -23,6 +23,13 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
23
23
|
Requires-Python: >=3
|
|
24
24
|
Description-Content-Type: text/markdown
|
|
25
25
|
License-File: LICENSE.txt
|
|
26
|
+
Requires-Dist: docopt
|
|
27
|
+
Requires-Dist: anytree
|
|
28
|
+
Requires-Dist: globre
|
|
29
|
+
Requires-Dist: pyyaml
|
|
30
|
+
Requires-Dist: tqdm
|
|
31
|
+
Requires-Dist: GitPython
|
|
32
|
+
Requires-Dist: python-gitlab
|
|
26
33
|
|
|
27
34
|
.. image:: https://github.com/ezbz/gitlabber/actions/workflows/python-app.yml/badge.svg?branch=master
|
|
28
35
|
:target: https://github.com/ezbz/gitlabber/actions/workflows/python-app.yml
|
|
@@ -42,6 +49,7 @@ License-File: LICENSE.txt
|
|
|
42
49
|
.. image:: https://readthedocs.org/projects/gitlabber/badge/?version=latest&style=plastic
|
|
43
50
|
:target: https://gitlabber.readthedocs.io/en/latest/README.html
|
|
44
51
|
|
|
52
|
+
|
|
45
53
|
Gitlabber
|
|
46
54
|
=========
|
|
47
55
|
|
|
@@ -111,62 +119,61 @@ Usage
|
|
|
111
119
|
|
|
112
120
|
.. code-block:: bash
|
|
113
121
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
[-x csv] [--version] [-g {id,full_path,full_name}]
|
|
117
|
-
[dest]
|
|
118
|
-
|
|
119
|
-
Gitlabber - clones or pulls entire groups/projects tree from GitLab
|
|
122
|
+
usage: gitlabber [-h] [-t token] [-T] [-u url] [--verbose] [-p] [--print-format {json,yaml,tree}] [-n {name,path}] [-m {ssh,http}] [-a {include,exclude,only}] [-i csv] [-x csv] [-r] [-F] [-d] [-s] [--version]
|
|
123
|
+
[dest]
|
|
120
124
|
|
|
125
|
+
Gitlabber - clones or pulls entire groups/projects tree from gitlab
|
|
126
|
+
|
|
121
127
|
positional arguments:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
dest destination path for the cloned tree (created if doesn't exist)
|
|
129
|
+
|
|
130
|
+
options:
|
|
131
|
+
-h, --help show this help message and exit
|
|
132
|
+
-t token, --token token
|
|
127
133
|
gitlab personal access token https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
134
|
+
-T, --hide-token use an inline URL token (avoids storing the gitlab personal access token in the .git/config)
|
|
135
|
+
-u url, --url url base gitlab url (e.g.: 'http://gitlab.mycompany.com')
|
|
136
|
+
--verbose print more verbose output
|
|
137
|
+
-p, --print print the tree without cloning
|
|
138
|
+
--print-format {json,yaml,tree}
|
|
132
139
|
print format (default: 'tree')
|
|
133
|
-
|
|
134
|
-
the folder naming strategy for projects (default: "name")
|
|
135
|
-
|
|
140
|
+
-n {name,path}, --naming {name,path}
|
|
141
|
+
the folder naming strategy for projects from the gitlab API attributes (default: "name")
|
|
142
|
+
-m {ssh,http}, --method {ssh,http}
|
|
136
143
|
the git transport method to use for cloning (default: "ssh")
|
|
137
|
-
|
|
144
|
+
-a {include,exclude,only}, --archived {include,exclude,only}
|
|
138
145
|
include archived projects and groups in the results (default: "include")
|
|
139
|
-
|
|
146
|
+
-i csv, --include csv
|
|
140
147
|
comma delimited list of glob patterns of paths to projects or groups to clone/pull
|
|
141
|
-
|
|
148
|
+
-x csv, --exclude csv
|
|
142
149
|
comma delimited list of glob patterns of paths to projects or groups to exclude from clone/pull
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
150
|
+
-r, --recursive clone/pull git submodules recursively
|
|
151
|
+
-F, --use-fetch clone/fetch git repository (mirrored repositories)
|
|
152
|
+
-d, --dont-checkout don't checkout pulled git repository
|
|
153
|
+
-s, --include-shared include shared projects in the results
|
|
154
|
+
--version print the version
|
|
155
|
+
|
|
149
156
|
examples:
|
|
150
|
-
|
|
151
|
-
clone an entire gitlab tree using a
|
|
152
|
-
gitlabber -t <personal access token> -u <gitlab url>
|
|
153
|
-
|
|
154
|
-
# the following examples assume you provided token/url in environment variables so these arguments are omitted
|
|
157
|
+
|
|
158
|
+
clone an entire gitlab tree using a url and a token:
|
|
159
|
+
gitlabber -t <personal access token> -u <gitlab url>
|
|
160
|
+
|
|
155
161
|
only print the gitlab tree:
|
|
156
162
|
gitlabber -p .
|
|
157
|
-
|
|
163
|
+
|
|
158
164
|
clone only projects under subgroup 'MySubGroup' to location '~/GitlabRoot':
|
|
159
165
|
gitlabber -i '/MyGroup/MySubGroup**' ~/GitlabRoot
|
|
160
|
-
|
|
166
|
+
|
|
161
167
|
clone only projects under group 'MyGroup' excluding any projects under subgroup 'MySubGroup':
|
|
162
168
|
gitlabber -i '/MyGroup**' -x '/MyGroup/MySubGroup**' .
|
|
163
|
-
|
|
169
|
+
|
|
164
170
|
clone an entire gitlab tree except projects under groups named 'ArchiveGroup':
|
|
165
171
|
gitlabber -x '/ArchiveGroup**' .
|
|
166
|
-
|
|
172
|
+
|
|
167
173
|
clone projects that start with a case insensitive 'w' using a regular expression:
|
|
168
174
|
gitlabber -i '/{[w].*}' .
|
|
169
175
|
|
|
176
|
+
|
|
170
177
|
Debugging
|
|
171
178
|
---------
|
|
172
179
|
* You can use the `--verbose` flag to print Gitlabber debug messages
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '1.2.1'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_archive.cpython-311-pytest-8.2.2.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_format.cpython-311-pytest-8.2.2.pyc
RENAMED
|
File without changes
|
|
File without changes
|
{gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_gitlab_tree.cpython-311-pytest-8.2.2.pyc
RENAMED
|
File without changes
|
{gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_integration.cpython-311-pytest-8.2.2.pyc
RENAMED
|
File without changes
|
{gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_method.cpython-311-pytest-8.2.2.pyc
RENAMED
|
File without changes
|
{gitlabber-1.2.1 → gitlabber-1.2.2}/tests/__pycache__/test_naming.cpython-311-pytest-8.2.2.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|