extensions/git/src/actionButton.ts/ActionButtonCommand/getCommitActionButton
class ActionButtonCommand:	private getCommitActionButton(): SourceControlActionButton | undefined {
		const config = workspace.getConfiguration('git', Uri.file(this.repository.root));
		const showActionButton = config.get<{ commit: boolean }>('showActionButton', { commit: true });

		// The button is disabled
		if (!showActionButton.commit) { return undefined; }

		let title: string, tooltip: string;
		const postCommitCommand = config.get<string>('postCommitCommand');

		switch (postCommitCommand) {
			case 'push': {
				title = localize('scm button commit and push title', "$(arrow-up) Commit & Push");
				tooltip = this.state.isActionRunning ?
					localize('scm button committing pushing tooltip', "Committing & Pushing Changes...") :
					localize('scm button commit push tooltip', "Commit & Push Changes");
				break;
			}
			case 'sync': {
				title = localize('scm button commit and sync title', "$(sync) Commit & Sync");
				tooltip = this.state.isActionRunning ?
					localize('scm button committing synching tooltip', "Committing & Synching Changes...") :
					localize('scm button commit sync tooltip', "Commit & Sync Changes");
				break;
			}
			default: {
				title = localize('scm button commit title', "$(check) Commit");
				tooltip = this.state.isActionRunning ?
					localize('scm button committing tooltip', "Committing Changes...") :
					localize('scm button commit tooltip', "Commit Changes");
				break;
			}
		}

		return {
			command: {
				command: 'git.commit',
				title: title,
				tooltip: tooltip,
				arguments: [this.repository.sourceControl],
			},
			secondaryCommands: [
				[
					{
						command: 'git.commit',
						title: localize('scm secondary button commit', "Commit"),
						arguments: [this.repository.sourceControl, ''],
					},
					{
						command: 'git.commit',
						title: localize('scm secondary button commit and push', "Commit & Push"),
						arguments: [this.repository.sourceControl, 'push'],
					},
					{
						command: 'git.commit',
						title: localize('scm secondary button commit and sync', "Commit & Sync"),
						arguments: [this.repository.sourceControl, 'sync'],
					},
				]
			],
			enabled: this.state.repositoryHasChanges && !this.state.isActionRunning
		};
	}