Browse Source

Changes previous diff to working diff if uncommit

main
Eric Amodio 7 years ago
parent
commit
b17c43ba9a
4 changed files with 26 additions and 1 deletions
  1. +1
    -1
      src/commands/diffLineWithPrevious.ts
  2. +7
    -0
      src/commands/diffWithPrevious.ts
  3. +7
    -0
      src/git/git.ts
  4. +11
    -0
      src/gitProvider.ts

+ 1
- 1
src/commands/diffLineWithPrevious.ts View File

@ -42,7 +42,7 @@ export default class DiffLineWithPreviousCommand extends EditorCommand {
if (commit.isUncommitted) {
uri = commit.uri;
commit = new GitCommit(commit.repoPath, commit.previousSha, commit.previousFileName, commit.author, commit.date, commit.message);
line = blame.line.line + 1 + gitUri.offset;
line = (blame.line.line + 1) + gitUri.offset;
return commands.executeCommand(Commands.DiffWithWorking, uri, commit, line);
}
}

+ 7
- 0
src/commands/diffWithPrevious.ts View File

@ -34,6 +34,13 @@ export default class DiffWithPreviousCommand extends EditorCommand {
const gitUri = GitUri.fromUri(uri, this.git);
try {
if (!gitUri.sha) {
// If the file is uncommitted, treat it as a DiffWithWorking
if (await this.git.isFileUncommitted(gitUri.fsPath, gitUri.repoPath)) {
return commands.executeCommand(Commands.DiffWithWorking, uri);
}
}
const log = await this.git.getLogForFile(gitUri.fsPath, undefined, gitUri.repoPath, rangeOrLine as Range);
if (!log) return window.showWarningMessage(`Unable to open diff. File is probably not under source control`);

+ 7
- 0
src/git/git.ts View File

@ -167,6 +167,13 @@ export default class Git {
return gitCommand(root, 'show', `${sha}:./${file}`);
}
static statusForFile(fileName: string, repoPath: string): Promise<string> {
const [file, root]: [string, string] = Git.splitPath(Git.normalizePath(fileName), repoPath);
const params = ['status', file, '--short'];
return gitCommand(root, ...params);
}
static isUncommitted(sha: string) {
return UncommittedRegex.test(sha);
}

+ 11
- 0
src/gitProvider.ts View File

@ -545,6 +545,17 @@ export default class GitProvider extends Disposable {
return locations;
}
async getStatusForFile(fileName: string, repoPath: string) {
Logger.log(`getStatusForFile('${fileName}', ${repoPath})`);
return (await Git.statusForFile(fileName, repoPath)).trim();
}
async isFileUncommitted(fileName: string, repoPath: string) {
Logger.log(`isFileUncommitted('${fileName}', ${repoPath})`);
const status = await this.getStatusForFile(fileName, repoPath);
return status && status.length;
}
async getVersionedFile(fileName: string, repoPath: string, sha: string) {
Logger.log(`getVersionedFile('${fileName}', ${repoPath}, ${sha})`);

Loading…
Cancel
Save