Change:
I agree that sometimes it is more useful to but I often feel that it makes it hard to find branches when a naming scheme like "user/feature" is used and I want to quickly find all branches of a user. Even without that scheme there are good reasons why having an alphabetical sort option makes sense, if only for personal preference. To avoid a religious discussion, could the sort order be made into a config option?
, working on this :)

Discussion:
"scope": "resource", "default": false, "description": "%config.supportCancellation%" <ins> }, "git.sortOrderForBranch": { "type": "string", "enum": [ "committerdate", "alphabetically" ], "default": "committerdate", "description": "%config.sortOrderForBranch%" </ins> } } },

"config.confirmForcePush": "Controls whether to ask for confirmation before force-pushing.", "config.openDiffOnClick": "Controls whether the diff editor should be opened when clicking a change. Otherwise the regular editor will be opened.", "config.supportCancellation": "Controls whether a notification comes up when running the Sync action, which allows the user to cancel the operation.", <ins> "config.sortOrderForBranch": "Controls the sort order for branches", </ins> "colors.added": "Color for added resources.", "colors.modified": "Color for modified resources.", "colors.deleted": "Color for deleted resources.",

.map(([ref]) => ({ name: ref, type: RefType.Head } as Branch)); } <del> async getRefs(): Promise<Ref[]> { const result = await this.run(['for-each-ref', '--format', '%(refname) %(objectname)', '--sort', '-committerdate']); </del> <ins> async getRefs(sortBranchListByCommitterDate?: Boolean): Promise<Ref[]> { const args = ['for-each-ref', '--format', '%(refname) %(objectname)']; if (sortBranchListByCommitterDate) { args.push('--sort'); args.push('-committerdate'); } const result = await this.run(args); </ins> const fn = (line: string): Ref | null => { let match: RegExpExecArray | null;

onConfigListener(updateIndexGroupVisibility, this, this.disposables); updateIndexGroupVisibility(); <ins> const onConfigListenerForBranchSortOrder = filterEvent(workspace.onDidChangeConfiguration, e => e.affectsConfiguration('git.sortOrderForBranch', root)); onConfigListenerForBranchSortOrder(this.updateModelState, this, this.disposables); </ins> this.mergeGroup.hideWhenEmpty = true; this.disposables.push(this.mergeGroup);

const config = workspace.getConfiguration('git'); const shouldIgnore = config.get<boolean>('ignoreLimitWarning') === true; const useIcons = !config.get<boolean>('decorations.enabled', true); <ins> const sortBranchListByCommitterDate = config.get<string>('sortOrderForBranch') === 'committerdate'; </ins> this.isRepositoryHuge = didHitLimit; if (didHitLimit && !shouldIgnore && !this.didWarnAboutLimit) {

// noop } <del> const [refs, remotes, submodules, rebaseCommit] = await Promise.all([this.repository.getRefs(), this.repository.getRemotes(), this.repository.getSubmodules(), this.getRebaseCommit()]); </del> <ins> const [refs, remotes, submodules, rebaseCommit] = await Promise.all([this.repository.getRefs(sortBranchListByCommitterDate), this.repository.getRemotes(), this.repository.getSubmodules(), this.getRebaseCommit()]); </ins> this._HEAD = HEAD; this._refs = refs;