mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 18:49:00 +01:00
Git - improve repositories quick pick (#184794)
This commit is contained in:
@@ -196,9 +196,9 @@ class FetchAllRemotesItem implements QuickPickItem {
|
||||
}
|
||||
|
||||
class RepositoryItem implements QuickPickItem {
|
||||
get label(): string {
|
||||
return `$(repo) ${this.path}`;
|
||||
}
|
||||
get label(): string { return `$(repo) ${getRepositoryLabel(this.path)}`; }
|
||||
|
||||
get description(): string { return this.path; }
|
||||
|
||||
constructor(public readonly path: string) { }
|
||||
}
|
||||
@@ -358,6 +358,15 @@ function getCheckoutProcessor(repository: Repository, type: string): CheckoutPro
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function getRepositoryLabel(repositoryRoot: string): string {
|
||||
const workspaceFolder = workspace.getWorkspaceFolder(Uri.file(repositoryRoot));
|
||||
return workspaceFolder?.uri.toString() === repositoryRoot ? workspaceFolder.name : path.basename(repositoryRoot);
|
||||
}
|
||||
|
||||
function compareRepositoryLabel(repositoryRoot1: string, repositoryRoot2: string): number {
|
||||
return getRepositoryLabel(repositoryRoot1).localeCompare(getRepositoryLabel(repositoryRoot2));
|
||||
}
|
||||
|
||||
function sanitizeBranchName(name: string, whitespaceChar: string): string {
|
||||
return name ? name.trim().replace(/^-+/, '').replace(/^\.|\/\.|\.\.|~|\^|:|\/$|\.lock$|\.lock\/|\\|\*|\s|^\s*$|\.$|\[|\]$/g, whitespaceChar) : name;
|
||||
}
|
||||
@@ -896,7 +905,8 @@ export class CommandCenter {
|
||||
|
||||
const allRepositoriesLabel = l10n.t('All Repositories');
|
||||
const allRepositoriesQuickPickItem: QuickPickItem = { label: allRepositoriesLabel };
|
||||
const repositoriesQuickPickItems: QuickPickItem[] = this.model.closedRepositories.sort().map(r => new RepositoryItem(r));
|
||||
const repositoriesQuickPickItems: QuickPickItem[] = this.model.closedRepositories
|
||||
.sort(compareRepositoryLabel).map(r => new RepositoryItem(r));
|
||||
|
||||
const items = this.model.closedRepositories.length === 1 ? [...repositoriesQuickPickItems] :
|
||||
[...repositoriesQuickPickItems, { label: '', kind: QuickPickItemKind.Separator }, allRepositoriesQuickPickItem];
|
||||
@@ -3459,7 +3469,8 @@ export class CommandCenter {
|
||||
|
||||
const allRepositoriesLabel = l10n.t('All Repositories');
|
||||
const allRepositoriesQuickPickItem: QuickPickItem = { label: allRepositoriesLabel };
|
||||
const repositoriesQuickPickItems: QuickPickItem[] = Array.from(this.model.parentRepositories.keys()).sort().map(r => new RepositoryItem(r));
|
||||
const repositoriesQuickPickItems: QuickPickItem[] = Array.from(this.model.parentRepositories.keys())
|
||||
.sort(compareRepositoryLabel).map(r => new RepositoryItem(r));
|
||||
|
||||
const items = this.model.parentRepositories.size === 1 ? [...repositoriesQuickPickItems] :
|
||||
[...repositoriesQuickPickItems, { label: '', kind: QuickPickItemKind.Separator }, allRepositoriesQuickPickItem];
|
||||
@@ -3492,7 +3503,8 @@ export class CommandCenter {
|
||||
|
||||
const allRepositoriesLabel = l10n.t('All Repositories');
|
||||
const allRepositoriesQuickPickItem: QuickPickItem = { label: allRepositoriesLabel };
|
||||
const repositoriesQuickPickItems: QuickPickItem[] = Array.from(this.model.unsafeRepositories.keys()).sort().map(r => new RepositoryItem(r));
|
||||
const repositoriesQuickPickItems: QuickPickItem[] = Array.from(this.model.unsafeRepositories.keys())
|
||||
.sort(compareRepositoryLabel).map(r => new RepositoryItem(r));
|
||||
|
||||
quickpick.items = this.model.unsafeRepositories.size === 1 ? [...repositoriesQuickPickItems] :
|
||||
[...repositoriesQuickPickItems, { label: '', kind: QuickPickItemKind.Separator }, allRepositoriesQuickPickItem];
|
||||
|
||||
Reference in New Issue
Block a user