diff options
Diffstat (limited to 'extensions/git/src/actionButton.ts')
-rw-r--r-- | extensions/git/src/actionButton.ts | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/extensions/git/src/actionButton.ts b/extensions/git/src/actionButton.ts index 0f0741eb78c..63ee474707b 100644 --- a/extensions/git/src/actionButton.ts +++ b/extensions/git/src/actionButton.ts @@ -50,6 +50,8 @@ export class ActionButtonCommand { repository.onDidRunGitStatus(this.onDidRunGitStatus, this, this.disposables); repository.onDidChangeOperations(this.onDidChangeOperations, this, this.disposables); + this.disposables.push(postCommitCommandsProviderRegistry.onDidChangePostCommitCommandsProviders(() => this._onDidChange.fire())); + const root = Uri.file(repository.root); this.disposables.push(workspace.onDidChangeConfiguration(e => { if (e.affectsConfiguration('git.enableSmartCommit', root) || @@ -189,10 +191,10 @@ export class ActionButtonCommand { return { command: { command: 'git.publish', - title: localize('scm publish branch action button title', "{0} Publish Branch", '$(cloud-upload)'), + title: localize({ key: 'scm publish branch action button title', comment: ['{Locked="Branch"}', 'Do not translate "Branch" as it is a git term'] }, "{0} Publish Branch", '$(cloud-upload)'), tooltip: this.state.isSyncInProgress ? - localize('scm button publish branch running', "Publishing Branch...") : - localize('scm button publish branch', "Publish Branch"), + localize({ key: 'scm button publish branch running', comment: ['{Locked="Branch"}', 'Do not translate "Branch" as it is a git term'] }, "Publishing Branch...") : + localize({ key: 'scm button publish branch', comment: ['{Locked="Branch"}', 'Do not translate "Branch" as it is a git term'] }, "Publish Branch"), arguments: [this.repository.sourceControl], }, enabled: !this.state.isSyncInProgress @@ -202,19 +204,18 @@ export class ActionButtonCommand { private getSyncChangesActionButton(): SourceControlActionButton | undefined { const config = workspace.getConfiguration('git', Uri.file(this.repository.root)); const showActionButton = config.get<{ sync: boolean }>('showActionButton', { sync: true }); + const branchIsAheadOrBehind = (this.state.HEAD?.behind ?? 0) > 0 || (this.state.HEAD?.ahead ?? 0) > 0; - // Branch does not have an upstream, commit/merge is in progress, or the button is disabled - if (!this.state.HEAD?.upstream || this.state.isCommitInProgress || this.state.isMergeInProgress || !showActionButton.sync) { return undefined; } + // Branch does not have an upstream, branch is not ahead/behind the remote branch, commit/merge is in progress, or the button is disabled + if (!this.state.HEAD?.upstream || !branchIsAheadOrBehind || this.state.isCommitInProgress || this.state.isMergeInProgress || !showActionButton.sync) { return undefined; } const ahead = this.state.HEAD.ahead ? ` ${this.state.HEAD.ahead}$(arrow-up)` : ''; const behind = this.state.HEAD.behind ? ` ${this.state.HEAD.behind}$(arrow-down)` : ''; const icon = this.state.isSyncInProgress ? '$(sync~spin)' : '$(sync)'; - const rebaseWhenSync = config.get<string>('rebaseWhenSync'); - return { command: { - command: rebaseWhenSync ? 'git.syncRebase' : 'git.sync', + command: 'git.sync', title: `${icon}${behind}${ahead}`, tooltip: this.state.isSyncInProgress ? localize('syncing changes', "Synchronizing Changes...") |