From 2288e7cecd10bfaa491f6e04faf0f45ffa6adfc3 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Fri, 23 Feb 2018 10:21:06 +0100 Subject: [PATCH] improve git logging --- extensions/git/src/git.ts | 2 +- extensions/git/src/main.ts | 12 ++++++++++-- extensions/git/src/model.ts | 7 +++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index d2f0ee6f914..bc1a6cf494f 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -461,7 +461,7 @@ export class Git { }); if (options.log !== false) { - this.log(`git ${args.join(' ')}\n`); + this.log(`> git ${args.join(' ')}\n`); } return cp.spawn(this.gitPath, args, options); diff --git a/extensions/git/src/main.ts b/extensions/git/src/main.ts index e7e0c7e8768..9c915942b7b 100644 --- a/extensions/git/src/main.ts +++ b/extensions/git/src/main.ts @@ -26,7 +26,7 @@ async function init(context: ExtensionContext, outputChannel: OutputChannel, dis const askpass = new Askpass(); const env = await askpass.getEnv(); const git = new Git({ gitPath: info.path, version: info.version, env }); - const model = new Model(git, context.globalState); + const model = new Model(git, context.globalState, outputChannel); disposables.push(model); const onRepository = () => commands.executeCommand('setContext', 'gitOpenRepositoryCount', `${model.repositories.length}`); @@ -36,7 +36,15 @@ async function init(context: ExtensionContext, outputChannel: OutputChannel, dis outputChannel.appendLine(localize('using git', "Using git {0} from {1}", info.version, info.path)); - const onOutput = (str: string) => outputChannel.append(str); + const onOutput = (str: string) => { + const lines = str.split(/\r?\n/mg); + + while (/^\s*$/.test(lines[lines.length - 1])) { + lines.pop(); + } + + outputChannel.appendLine(lines.join('\n')); + }; git.onOutput.addListener('log', onOutput); disposables.push(toDisposable(() => git.onOutput.removeListener('log', onOutput))); diff --git a/extensions/git/src/model.ts b/extensions/git/src/model.ts index 3c0e8d6b59d..7360af97b09 100644 --- a/extensions/git/src/model.ts +++ b/extensions/git/src/model.ts @@ -5,7 +5,7 @@ 'use strict'; -import { workspace, WorkspaceFoldersChangeEvent, Uri, window, Event, EventEmitter, QuickPickItem, Disposable, SourceControl, SourceControlResourceGroup, TextEditor, Memento } from 'vscode'; +import { workspace, WorkspaceFoldersChangeEvent, Uri, window, Event, EventEmitter, QuickPickItem, Disposable, SourceControl, SourceControlResourceGroup, TextEditor, Memento, OutputChannel } from 'vscode'; import { Repository, RepositoryState } from './repository'; import { memoize, sequentialize, debounce } from './decorators'; import { dispose, anyEvent, filterEvent, isDescendant, firstIndex } from './util'; @@ -66,7 +66,7 @@ export class Model { private disposables: Disposable[] = []; - constructor(private git: Git, private globalState: Memento) { + constructor(private git: Git, private globalState: Memento, private outputChannel: OutputChannel) { workspace.onDidChangeWorkspaceFolders(this.onDidChangeWorkspaceFolders, this, this.disposables); this.onDidChangeWorkspaceFolders({ added: workspace.workspaceFolders || [], removed: [] }); @@ -215,6 +215,8 @@ export class Model { } private open(repository: Repository): void { + this.outputChannel.appendLine(`Open repository: ${repository.root}`); + const onDidDisappearRepository = filterEvent(repository.onDidChangeState, state => state === RepositoryState.Disposed); const disappearListener = onDidDisappearRepository(() => dispose()); const changeListener = repository.onDidChangeRepository(uri => this._onDidChangeRepository.fire({ repository, uri })); @@ -260,6 +262,7 @@ export class Model { return; } + this.outputChannel.appendLine(`Close repository: ${repository.root}`); openRepository.dispose(); }