Adds renamed file info into quick pick description

This commit is contained in:
Eric Amodio
2017-03-28 00:35:06 -04:00
parent 6d8a37a10f
commit 9071b55026
5 changed files with 31 additions and 17 deletions

View File

@@ -6,10 +6,16 @@ import * as path from 'path';
export type GitLogType = 'file' | 'repo'; export type GitLogType = 'file' | 'repo';
export interface IGitLogFileStatusEntry {
status: GitStatusFileStatus;
fileName: string;
originalFileName?: string;
}
export class GitLogCommit extends GitCommit { export class GitLogCommit extends GitCommit {
fileNames: string; fileNames: string;
fileStatuses: { status: GitStatusFileStatus, fileName: string, originalFileName?: string }[]; fileStatuses: IGitLogFileStatusEntry[];
nextSha?: string; nextSha?: string;
nextFileName?: string; nextFileName?: string;
parentShas: string[]; parentShas: string[];
@@ -24,7 +30,7 @@ export class GitLogCommit extends GitCommit {
date: Date, date: Date,
message: string, message: string,
status?: GitStatusFileStatus, status?: GitStatusFileStatus,
fileStatuses?: { status: GitStatusFileStatus, fileName: string, originalFileName?: string }[], fileStatuses?: IGitLogFileStatusEntry[],
lines?: IGitCommitLine[], lines?: IGitCommitLine[],
originalFileName?: string, originalFileName?: string,
previousSha?: string, previousSha?: string,

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
import { Range } from 'vscode'; import { Range } from 'vscode';
import { Git, GitStatusFileStatus, GitLogCommit, GitLogType, IGitAuthor, IGitLog } from './../git'; import { Git, GitStatusFileStatus, GitLogCommit, GitLogType, IGitAuthor, IGitLog, IGitLogFileStatusEntry } from './../git';
// import { Logger } from '../../logger'; // import { Logger } from '../../logger';
import * as moment from 'moment'; import * as moment from 'moment';
import * as path from 'path'; import * as path from 'path';
@@ -18,7 +18,7 @@ interface ILogEntry {
fileName?: string; fileName?: string;
originalFileName?: string; originalFileName?: string;
fileStatuses?: { status: GitStatusFileStatus, fileName: string, originalFileName: string }[]; fileStatuses?: IGitLogFileStatusEntry[];
status?: GitStatusFileStatus; status?: GitStatusFileStatus;
@@ -134,7 +134,7 @@ export class GitLogParser {
status: line[0] as GitStatusFileStatus, status: line[0] as GitStatusFileStatus,
fileName: line.substring(1), fileName: line.substring(1),
originalFileName: undefined as string originalFileName: undefined as string
}; } as IGitLogFileStatusEntry;
this._parseFileName(status); this._parseFileName(status);
entry.fileStatuses.push(status); entry.fileStatuses.push(status);

View File

@@ -36,7 +36,7 @@ export class OpenCommitWorkingTreeFilesCommandQuickPickItem extends OpenFilesCom
export class CommitDetailsQuickPick { export class CommitDetailsQuickPick {
static async show(git: GitService, commit: GitLogCommit, uri: Uri, goBackCommand?: CommandQuickPickItem, currentCommand?: CommandQuickPickItem, repoLog?: IGitLog): Promise<CommitWithFileStatusQuickPickItem | CommandQuickPickItem | undefined> { static async show(git: GitService, commit: GitLogCommit, uri: Uri, goBackCommand?: CommandQuickPickItem, currentCommand?: CommandQuickPickItem, repoLog?: IGitLog): Promise<CommitWithFileStatusQuickPickItem | CommandQuickPickItem | undefined> {
const items: (CommitWithFileStatusQuickPickItem | CommandQuickPickItem)[] = commit.fileStatuses.map(fs => new CommitWithFileStatusQuickPickItem(commit, fs.fileName, fs.status)); const items: (CommitWithFileStatusQuickPickItem | CommandQuickPickItem)[] = commit.fileStatuses.map(fs => new CommitWithFileStatusQuickPickItem(commit, fs));
let index = 0; let index = 0;

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
import { QuickPickItem, Uri } from 'vscode'; import { QuickPickItem, Uri } from 'vscode';
import { getGitStatusIcon, Git, GitCommit, GitStatusFileStatus, GitService, GitUri } from '../gitService'; import { getGitStatusIcon, Git, GitCommit, GitStatusFileStatus, GitService, GitUri, IGitLogFileStatusEntry } from '../gitService';
import { OpenFileCommandQuickPickItem } from './quickPicks'; import { OpenFileCommandQuickPickItem } from './quickPicks';
import * as moment from 'moment'; import * as moment from 'moment';
import * as path from 'path'; import * as path from 'path';
@@ -26,23 +26,27 @@ export class CommitWithFileStatusQuickPickItem extends OpenFileCommandQuickPickI
shortSha: string; shortSha: string;
status: GitStatusFileStatus; status: GitStatusFileStatus;
constructor(commit: GitCommit, fileName: string, status: GitStatusFileStatus) { constructor(commit: GitCommit, status: IGitLogFileStatusEntry) {
const icon = getGitStatusIcon(status); const icon = getGitStatusIcon(status.status);
let directory = Git.normalizePath(path.dirname(fileName)); let directory = Git.normalizePath(path.dirname(status.fileName));
if (!directory || directory === '.') { if (!directory || directory === '.') {
directory = undefined; directory = undefined;
} }
super(GitService.toGitContentUri(commit.sha, fileName, commit.repoPath, commit.originalFileName), { let description = (status.status === 'R' && status.originalFileName)
label: `\u00a0\u00a0\u00a0\u00a0${icon}\u00a0\u00a0 ${path.basename(fileName)}`, ? `${directory || ''} \u00a0\u2190\u00a0 ${status.originalFileName}`
description: directory : directory;
super(GitService.toGitContentUri(commit.sha, status.fileName, commit.repoPath, commit.originalFileName), {
label: `\u00a0\u00a0\u00a0\u00a0${icon}\u00a0\u00a0 ${path.basename(status.fileName)}`,
description: description
}); });
this.fileName = fileName; this.fileName = status.fileName;
this.gitUri = new GitUri(Uri.file(path.resolve(commit.repoPath, fileName))); this.gitUri = new GitUri(Uri.file(path.resolve(commit.repoPath, status.fileName)));
this.sha = commit.sha; this.sha = commit.sha;
this.shortSha = commit.shortSha; this.shortSha = commit.shortSha;
this.status = status; this.status = status.status;
} }
} }

View File

@@ -17,9 +17,13 @@ export class OpenStatusFileCommandQuickPickItem extends OpenFileCommandQuickPick
directory = undefined; directory = undefined;
} }
let description = (status.status === 'R' && status.originalFileName)
? `${directory || ''} \u00a0\u2190\u00a0 ${status.originalFileName}`
: directory;
super(uri, item || { super(uri, item || {
label: `${status.staged ? '$(check)' : '\u00a0\u00a0\u00a0'}\u00a0\u00a0${icon}\u00a0\u00a0\u00a0${path.basename(status.fileName)}`, label: `${status.staged ? '$(check)' : '\u00a0\u00a0\u00a0'}\u00a0\u00a0${icon}\u00a0\u00a0\u00a0${path.basename(status.fileName)}`,
description: directory description: description
}); });
} }
} }