Merge lp:~jelmer/brz/gitlab-create-project-1 into lp:brz/3.1

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/gitlab-create-project-1
Merge into: lp:brz/3.1
Diff against target: 42 lines (+18/-2)
2 files modified
breezy/git/remote.py (+1/-1)
breezy/plugins/gitlab/hoster.py (+17/-1)
To merge this branch: bzr merge lp:~jelmer/brz/gitlab-create-project-1
Reviewer Review Type Date Requested Status
Jelmer Vernooij Approve
Review via email: mp+400295@code.launchpad.net

Commit message

Fix GitLab.create_project.

Description of the change

Fix GitLab.create_project.

To post a comment you must log in.
Revision history for this message
Jelmer Vernooij (jelmer) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/git/remote.py'
2--- breezy/git/remote.py 2021-03-24 16:30:14 +0000
3+++ breezy/git/remote.py 2021-03-27 16:42:43 +0000
4@@ -511,7 +511,7 @@
5 raise AlreadyBranchError(self.user_url)
6 ref_chain, unused_sha = self.get_refs_container().follow(
7 self._get_selected_ref(name))
8- if ref_chain and ref_chain[0] == b'HEAD':
9+ if ref_chain and ref_chain[0] == b'HEAD' and len(ref_chain) > 1:
10 refname = ref_chain[1]
11 repo = self.open_repository()
12 return RemoteGitBranch(self, repo, refname)
13
14=== modified file 'breezy/plugins/gitlab/hoster.py'
15--- breezy/plugins/gitlab/hoster.py 2021-03-27 10:42:29 +0000
16+++ breezy/plugins/gitlab/hoster.py 2021-03-27 16:42:43 +0000
17@@ -432,8 +432,24 @@
18 _unexpected_status(path, response)
19
20 def create_project(self, project_name):
21- fields = {'name': project_name}
22+ if project_name.endswith('.git'):
23+ project_name = project_name[:-4]
24+ if '/' in project_name:
25+ namespace, path = project_name.rsplit('/', 1)
26+ else:
27+ namespace = None
28+ path = project_name
29+ fields = {
30+ 'path': path,
31+ 'name': path.replace('-', '_'),
32+ 'namespace_path': namespace,
33+ }
34 response = self._api_request('POST', 'projects', fields=fields)
35+ if response.status == 400:
36+ ret = json.loads(response.data)
37+ if ret.get("message", {}).get("path") == ["has already been taken"]:
38+ raise errors.AlreadyControlDirError(project_name)
39+ raise
40 if response.status == 403:
41 raise errors.PermissionDenied(response.text)
42 if response.status not in (200, 201):

Subscribers

People subscribed via source and target branches