Refactors git models & parsers

Adds full git status parsing
Adds git status info into status quick pick
Switches to async/await in file blame/log
This commit is contained in:
Eric Amodio
2017-03-19 00:36:51 -04:00
parent 14eebbba15
commit ef74ae0950
19 changed files with 556 additions and 407 deletions

45
src/git/models/status.ts Normal file
View File

@@ -0,0 +1,45 @@
'use strict';
export interface IGitStatus {
branch: string;
repoPath: string;
sha: string;
state: {
ahead: number;
behind: number;
};
upstream?: string;
files: GitStatusFile[];
}
export declare type GitStatusFileStatus = '!' | '?' | 'A' | 'C' | 'D' | 'M' | 'R' | 'U';
export class GitStatusFile {
originalFileName?: string;
constructor(public repoPath: string, public status: GitStatusFileStatus, public staged: boolean, public fileName: string, originalFileName?: string) {
this.originalFileName = originalFileName;
}
getIcon() {
return getGitStatusIcon(this.status);
}
}
const statusOcticonsMap = {
'!': '$(diff-ignored)',
'?': '$(diff-added)',
A: '$(diff-added)',
C: '$(diff-added)',
D: '$(diff-removed)',
M: '$(diff-modified)',
R: '$(diff-renamed)',
U: '$(question)'
};
export function getGitStatusIcon(status: GitStatusFileStatus, missing: string = '\u00a0\u00a0\u00a0\u00a0'): string {
return statusOcticonsMap[status] || missing;
}