Skip to content

Commit 42a0293

Browse files
Fix repo names for Bitbucket (Server) (#20264)
* Fix repo names for Bitbucket (Server) * remove unused project mutation * Update tests * Use `ContextService` again
1 parent 9d42ec3 commit 42a0293

15 files changed

+54
-53
lines changed

components/dashboard/src/data/projects/create-project-mutation.ts

Lines changed: 0 additions & 35 deletions
This file was deleted.

components/gitpod-protocol/src/gitpod-service.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,6 @@ export interface GetDefaultWorkspaceImageResult {
311311

312312
export interface CreateProjectParams {
313313
name: string;
314-
/** @deprecated unused */
315-
slug: string;
316314
cloneUrl: string;
317315
teamId: string;
318316
appInstallationId: string;

components/gitpod-protocol/src/protocol.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,6 +1286,10 @@ export interface Repository {
12861286
* Optional date when the repository was last pushed to.
12871287
*/
12881288
pushedAt?: string;
1289+
/**
1290+
* Optional display name (e.g. for Bitbucket)
1291+
*/
1292+
displayName?: string;
12891293
}
12901294

12911295
export interface RepositoryInfo {

components/server/src/api/configuration-service-api.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { PaginationToken, generatePaginationToken, parsePaginationToken } from "
2727
import { ctxUserId } from "../util/request-context";
2828
import { UserService } from "../user/user-service";
2929
import { SortOrder } from "@gitpod/public-api/lib/gitpod/v1/sorting_pb";
30-
import { Project } from "@gitpod/gitpod-protocol";
30+
import { CommitContext, Project } from "@gitpod/gitpod-protocol";
3131
import { DeepPartial } from "@gitpod/gitpod-protocol/lib/util/deep-partial";
3232
import { ContextService } from "../workspace/context-service";
3333

@@ -76,18 +76,20 @@ export class ConfigurationServiceAPI implements ServiceImpl<typeof Configuration
7676
throw new ApplicationError(ErrorCodes.NOT_FOUND, "user not found");
7777
}
7878

79-
const cloneUrl = await this.contextService.parseContextUrlAsCloneUrl(installer, req.cloneUrl);
80-
if (!cloneUrl) {
79+
const context = await this.contextService.parseContextUrl(installer, req.cloneUrl);
80+
if (!CommitContext.is(context)) {
8181
throw new ApplicationError(ErrorCodes.BAD_REQUEST, "clone_url is not valid");
8282
}
8383

84+
// The dashboard, for example, does not provide an explicit name, so we infer it
85+
const name = req.name || (context.repository.displayName ?? context.repository.name);
86+
8487
const project = await this.projectService.createProject(
8588
{
8689
teamId: req.organizationId,
87-
name: req.name,
88-
cloneUrl,
90+
name,
91+
cloneUrl: context.repository.cloneUrl,
8992
appInstallationId: "",
90-
slug: "",
9193
},
9294
installer,
9395
);

components/server/src/bitbucket-server/bitbucket-server-context-parser.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ class TestBitbucketServerContextParser {
9696
host: "bitbucket.gitpod-dev.com",
9797
owner: "GIT",
9898
name: "gitpod-test-repo",
99+
displayName: "Gitpod Test Repo",
99100
cloneUrl: "https://bitbucket.gitpod-dev.com/scm/git/gitpod-test-repo.git",
100101
webUrl: "https://bitbucket.gitpod-dev.com/projects/GIT/repos/gitpod-test-repo",
101102
defaultBranch: "master",
@@ -123,6 +124,7 @@ class TestBitbucketServerContextParser {
123124
host: "bitbucket.gitpod-dev.com",
124125
owner: "GIT",
125126
name: "gitpod-test-repo",
127+
displayName: "Gitpod Test Repo",
126128
cloneUrl: "https://bitbucket.gitpod-dev.com/scm/git/gitpod-test-repo.git",
127129
webUrl: "https://bitbucket.gitpod-dev.com/projects/GIT/repos/gitpod-test-repo",
128130
defaultBranch: "master",
@@ -150,6 +152,7 @@ class TestBitbucketServerContextParser {
150152
host: "bitbucket.gitpod-dev.com",
151153
owner: "geropl",
152154
name: "test-user-repo",
155+
displayName: "test-user-repo",
153156
cloneUrl: "https://bitbucket.gitpod-dev.com/scm/~geropl/test-user-repo.git",
154157
webUrl: "https://bitbucket.gitpod-dev.com/users/geropl/repos/test-user-repo",
155158
defaultBranch: "main",
@@ -177,6 +180,7 @@ class TestBitbucketServerContextParser {
177180
defaultBranch: "main",
178181
host: "bitbucket.gitpod-dev.com",
179182
name: "test-user-repo",
183+
displayName: "test-user-repo",
180184
owner: "geropl",
181185
private: true,
182186
repoKind: "users",
@@ -203,6 +207,7 @@ class TestBitbucketServerContextParser {
203207
defaultBranch: "master",
204208
host: "bitbucket.gitpod-dev.com",
205209
name: "gitpod-test-repo",
210+
displayName: "Gitpod Test Repo",
206211
owner: "GIT",
207212
private: true,
208213
repoKind: "projects",
@@ -229,6 +234,7 @@ class TestBitbucketServerContextParser {
229234
defaultBranch: "master",
230235
host: "bitbucket.gitpod-dev.com",
231236
name: "gitpod-test-repo",
237+
displayName: "Gitpod Test Repo",
232238
owner: "GIT",
233239
private: true,
234240
repoKind: "projects",
@@ -256,6 +262,7 @@ class TestBitbucketServerContextParser {
256262
defaultBranch: "main",
257263
host: "bitbucket.gitpod-dev.com",
258264
name: "browser-extension-test",
265+
displayName: "browser-extension-test",
259266
owner: "svenefftinge",
260267
repoKind: "users",
261268
private: false,
@@ -284,6 +291,7 @@ class TestBitbucketServerContextParser {
284291
defaultBranch: "main",
285292
host: "bitbucket.gitpod-dev.com",
286293
name: "browser-extension-test",
294+
displayName: "browser-extension-test",
287295
owner: "svenefftinge",
288296
repoKind: "users",
289297
private: false,
@@ -310,6 +318,7 @@ class TestBitbucketServerContextParser {
310318
host: "bitbucket.gitpod-dev.com",
311319
owner: "GIT",
312320
name: "gitpod-test-repo",
321+
displayName: "Gitpod Test Repo",
313322
cloneUrl: "https://bitbucket.gitpod-dev.com/scm/git/gitpod-test-repo.git",
314323
webUrl: "https://bitbucket.gitpod-dev.com/projects/GIT/repos/gitpod-test-repo",
315324
defaultBranch: "master",
@@ -323,6 +332,7 @@ class TestBitbucketServerContextParser {
323332
host: "bitbucket.gitpod-dev.com",
324333
owner: "GIT",
325334
name: "gitpod-test-repo",
335+
displayName: "Gitpod Test Repo",
326336
cloneUrl: "https://bitbucket.gitpod-dev.com/scm/git/gitpod-test-repo.git",
327337
webUrl: "https://bitbucket.gitpod-dev.com/projects/GIT/repos/gitpod-test-repo",
328338
defaultBranch: "master",
@@ -350,6 +360,7 @@ class TestBitbucketServerContextParser {
350360
host: "bitbucket.gitpod-dev.com",
351361
owner: "GIT",
352362
name: "gitpod-test-repo",
363+
displayName: "Gitpod Test Repo",
353364
cloneUrl: "https://bitbucket.gitpod-dev.com/scm/git/gitpod-test-repo.git",
354365
webUrl: "https://bitbucket.gitpod-dev.com/projects/GIT/repos/gitpod-test-repo",
355366
defaultBranch: "master",
@@ -363,6 +374,7 @@ class TestBitbucketServerContextParser {
363374
host: "bitbucket.gitpod-dev.com",
364375
owner: "GIT",
365376
name: "gitpod-test-repo",
377+
displayName: "Gitpod Test Repo",
366378
cloneUrl: "https://bitbucket.gitpod-dev.com/scm/git/gitpod-test-repo.git",
367379
webUrl: "https://bitbucket.gitpod-dev.com/projects/GIT/repos/gitpod-test-repo",
368380
defaultBranch: "master",
@@ -389,6 +401,7 @@ class TestBitbucketServerContextParser {
389401
host: "bitbucket.gitpod-dev.com",
390402
owner: "GIT",
391403
name: "gitpod-test-repo",
404+
displayName: "Gitpod Test Repo",
392405
cloneUrl: "https://bitbucket.gitpod-dev.com/scm/git/gitpod-test-repo.git",
393406
webUrl: "https://bitbucket.gitpod-dev.com/projects/GIT/repos/gitpod-test-repo",
394407
defaultBranch: "master",
@@ -415,6 +428,7 @@ class TestBitbucketServerContextParser {
415428
host: "bitbucket.gitpod-dev.com",
416429
owner: "GIT",
417430
name: "gitpod-test-repo",
431+
displayName: "Gitpod Test Repo",
418432
cloneUrl: "https://bitbucket.gitpod-dev.com/scm/git/gitpod-test-repo.git",
419433
webUrl: "https://bitbucket.gitpod-dev.com/projects/GIT/repos/gitpod-test-repo",
420434
defaultBranch: "master",

components/server/src/bitbucket-server/bitbucket-server-context-parser.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ export class BitbucketServerContextParser extends AbstractContextParser implemen
285285
defaultBranch: BitbucketServer.Branch,
286286
): Repository {
287287
const owner = repo.project.owner ? repo.project.owner.slug : repo.project.key;
288-
const name = repo.name;
288+
const name = repo.slug;
289289
const cloneUrl = repo.links.clone.find((u) => u.name === "http")?.href!;
290290
const webUrl = repo.links?.self[0]?.href?.replace(/\/browse$/, "");
291291

@@ -298,6 +298,7 @@ export class BitbucketServerContextParser extends AbstractContextParser implemen
298298
repoKind,
299299
private: !repo.public,
300300
defaultBranch: defaultBranch.displayId || DEFAULT_BRANCH,
301+
displayName: repo.name,
301302
};
302303

303304
return result;

components/server/src/bitbucket/bitbucket-context-parser.spec.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ class TestBitbucketContextParser {
8585
host: "bitbucket.org",
8686
owner: "gitpod",
8787
name: "integration-tests",
88+
displayName: "Integration Tests",
8889
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
8990
defaultBranch: "master",
9091
private: false,
@@ -109,6 +110,7 @@ class TestBitbucketContextParser {
109110
host: "bitbucket.org",
110111
owner: "gitpod",
111112
name: "integration-tests",
113+
displayName: "Integration Tests",
112114
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
113115
defaultBranch: "master",
114116
private: false,
@@ -133,6 +135,7 @@ class TestBitbucketContextParser {
133135
host: "bitbucket.org",
134136
owner: "gitpod",
135137
name: "integration-tests",
138+
displayName: "Integration Tests",
136139
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
137140
defaultBranch: "master",
138141
private: false,
@@ -157,6 +160,7 @@ class TestBitbucketContextParser {
157160
host: "bitbucket.org",
158161
owner: "gitpod",
159162
name: "integration-tests",
163+
displayName: "Integration Tests",
160164
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
161165
defaultBranch: "master",
162166
private: false,
@@ -181,6 +185,7 @@ class TestBitbucketContextParser {
181185
host: "bitbucket.org",
182186
owner: "gitpod",
183187
name: "integration-tests",
188+
displayName: "Integration Tests",
184189
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
185190
defaultBranch: "master",
186191
private: false,
@@ -205,6 +210,7 @@ class TestBitbucketContextParser {
205210
host: "bitbucket.org",
206211
owner: "gitpod",
207212
name: "integration-tests",
213+
displayName: "Integration Tests",
208214
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
209215
defaultBranch: "master",
210216
private: false,
@@ -229,6 +235,7 @@ class TestBitbucketContextParser {
229235
host: "bitbucket.org",
230236
owner: "gitpod",
231237
name: "integration-tests",
238+
displayName: "Integration Tests",
232239
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
233240
defaultBranch: "master",
234241
private: false,
@@ -253,6 +260,7 @@ class TestBitbucketContextParser {
253260
host: "bitbucket.org",
254261
owner: "gitpod",
255262
name: "integration-tests",
263+
displayName: "Integration Tests",
256264
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
257265
defaultBranch: "master",
258266
private: false,
@@ -277,6 +285,7 @@ class TestBitbucketContextParser {
277285
host: "bitbucket.org",
278286
owner: "gitpod",
279287
name: "integration-tests",
288+
displayName: "Integration Tests",
280289
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
281290
defaultBranch: "master",
282291
private: false,
@@ -301,6 +310,7 @@ class TestBitbucketContextParser {
301310
host: "bitbucket.org",
302311
owner: "gitpod",
303312
name: "integration-tests",
313+
displayName: "Integration Tests",
304314
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
305315
defaultBranch: "master",
306316
private: false,
@@ -325,6 +335,7 @@ class TestBitbucketContextParser {
325335
host: "bitbucket.org",
326336
owner: "gitpod",
327337
name: "integration-tests",
338+
displayName: "Integration Tests",
328339
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
329340
defaultBranch: "master",
330341
private: false,
@@ -349,6 +360,7 @@ class TestBitbucketContextParser {
349360
host: "bitbucket.org",
350361
owner: "gitpod",
351362
name: "integration-tests",
363+
displayName: "Integration Tests",
352364
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
353365
defaultBranch: "master",
354366
private: false,
@@ -373,6 +385,7 @@ class TestBitbucketContextParser {
373385
host: "bitbucket.org",
374386
owner: "gitpod",
375387
name: "integration-tests",
388+
displayName: "Integration Tests",
376389
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
377390
defaultBranch: "master",
378391
private: false,
@@ -397,6 +410,7 @@ class TestBitbucketContextParser {
397410
host: "bitbucket.org",
398411
owner: "gitpod",
399412
name: "integration-tests",
413+
displayName: "Integration Tests",
400414
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
401415
defaultBranch: "master",
402416
private: false,
@@ -417,6 +431,7 @@ class TestBitbucketContextParser {
417431
host: "bitbucket.org",
418432
owner: "gitpod",
419433
name: "integration-tests",
434+
displayName: "Integration Tests",
420435
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
421436
defaultBranch: "master",
422437
private: false,
@@ -430,6 +445,7 @@ class TestBitbucketContextParser {
430445
host: "bitbucket.org",
431446
owner: "gitpod",
432447
name: "integration-tests",
448+
displayName: "Integration Tests",
433449
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
434450
defaultBranch: "master",
435451
private: false,
@@ -452,6 +468,7 @@ class TestBitbucketContextParser {
452468
host: "bitbucket.org",
453469
owner: "corneliusltf",
454470
name: "sample-repository",
471+
displayName: "Sample Repository",
455472
cloneUrl: "https://bitbucket.org/corneliusltf/sample-repository.git",
456473
defaultBranch: "master",
457474
private: false,
@@ -461,6 +478,7 @@ class TestBitbucketContextParser {
461478
defaultBranch: "master",
462479
host: "bitbucket.org",
463480
name: "integration-tests",
481+
displayName: "Integration Tests",
464482
owner: "gitpod",
465483
private: false,
466484
},
@@ -475,6 +493,7 @@ class TestBitbucketContextParser {
475493
host: "bitbucket.org",
476494
owner: "gitpod",
477495
name: "integration-tests",
496+
displayName: "Integration Tests",
478497
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
479498
defaultBranch: "master",
480499
private: false,
@@ -497,6 +516,7 @@ class TestBitbucketContextParser {
497516
host: "bitbucket.org",
498517
owner: "gitpod",
499518
name: "integration-tests",
519+
displayName: "Integration Tests",
500520
cloneUrl: "https://bitbucket.org/gitpod/integration-tests.git",
501521
defaultBranch: "master",
502522
private: false,
@@ -525,6 +545,7 @@ class TestBitbucketContextParser {
525545
host: "bitbucket.org",
526546
owner: "gitpod",
527547
name: "integration-tests-forked-repository",
548+
displayName: "integration-tests-forked-repository",
528549
cloneUrl: "https://bitbucket.org/gitpod/integration-tests-forked-repository.git",
529550
defaultBranch: "master",
530551
private: false,
@@ -534,6 +555,7 @@ class TestBitbucketContextParser {
534555
defaultBranch: "master",
535556
host: "bitbucket.org",
536557
name: "my-sample-repo",
558+
displayName: "my-sample-repo",
537559
owner: "corneliusludmann",
538560
private: false,
539561
},

0 commit comments

Comments
 (0)