mirror of
https://github.com/ckaczor/vscode-gitlens.git
synced 2026-01-17 17:25:51 -05:00
Adds shortenSha method
This commit is contained in:
@@ -3,7 +3,7 @@ import { Strings } from '../system';
|
||||
import { TextEditor, Uri, window } from 'vscode';
|
||||
import { ActiveEditorCommand, Commands, getCommandUri } from './common';
|
||||
import { GlyphChars } from '../constants';
|
||||
import { GitLogCommit, GitRemote, RemoteResource } from '../gitService';
|
||||
import { GitLogCommit, GitRemote, GitService, RemoteResource } from '../gitService';
|
||||
import { Logger } from '../logger';
|
||||
import { CommandQuickPickItem, OpenRemoteCommandQuickPickItem, RemotesQuickPick } from '../quickPicks';
|
||||
|
||||
@@ -50,7 +50,7 @@ export class OpenInRemoteCommand extends ActiveEditorCommand {
|
||||
break;
|
||||
|
||||
case 'commit':
|
||||
const shortSha = args.resource.sha.substring(0, 8);
|
||||
const shortSha = GitService.shortenSha(args.resource.sha);
|
||||
placeHolder = `open commit ${shortSha} in${GlyphChars.Ellipsis}`;
|
||||
break;
|
||||
|
||||
@@ -70,7 +70,7 @@ export class OpenInRemoteCommand extends ActiveEditorCommand {
|
||||
}
|
||||
}
|
||||
else {
|
||||
const shortFileSha = args.resource.sha === undefined ? '' : args.resource.sha.substring(0, 8);
|
||||
const shortFileSha = args.resource.sha === undefined ? '' : GitService.shortenSha(args.resource.sha);
|
||||
const shaSuffix = shortFileSha ? ` ${Strings.pad(GlyphChars.Dot, 1, 1)} ${shortFileSha}` : '';
|
||||
|
||||
placeHolder = `open ${args.resource.fileName}${shaSuffix} in${GlyphChars.Ellipsis}`;
|
||||
|
||||
@@ -95,7 +95,7 @@ export class ShowQuickCommitFileDetailsCommand extends ActiveEditorCachedCommand
|
||||
args.commit.workingFileName = workingFileName;
|
||||
args.commit.workingFileName = await this.git.findWorkingFileName(args.commit);
|
||||
|
||||
const shortSha = args.sha!.substring(0, 8);
|
||||
const shortSha = GitService.shortenSha(args.sha!);
|
||||
|
||||
if (args.goBackCommand === undefined) {
|
||||
// Create a command to get back to the commit details
|
||||
|
||||
@@ -99,7 +99,7 @@ export class Git {
|
||||
static async getVersionedFile(repoPath: string | undefined, fileName: string, branchOrSha: string) {
|
||||
const data = await Git.show(repoPath, fileName, branchOrSha, 'binary');
|
||||
|
||||
const suffix = Git.isSha(branchOrSha) ? branchOrSha.substring(0, 8) : branchOrSha;
|
||||
const suffix = Git.isSha(branchOrSha) ? Git.shortenSha(branchOrSha) : branchOrSha;
|
||||
const ext = path.extname(fileName);
|
||||
return new Promise<string>((resolve, reject) => {
|
||||
tmp.file({ prefix: `${path.basename(fileName, ext)}-${suffix}__`, postfix: ext },
|
||||
@@ -134,6 +134,10 @@ export class Git {
|
||||
return fileName && fileName.replace(/\\/g, '/');
|
||||
}
|
||||
|
||||
static shortenSha(sha: string) {
|
||||
return sha.substring(0, 8);
|
||||
}
|
||||
|
||||
static splitPath(fileName: string, repoPath: string | undefined, extract: boolean = true): [string, string] {
|
||||
if (repoPath) {
|
||||
fileName = this.normalizePath(fileName);
|
||||
|
||||
@@ -56,7 +56,7 @@ export class GitUri extends Uri {
|
||||
}
|
||||
|
||||
get shortSha() {
|
||||
return this.sha && this.sha.substring(0, 8);
|
||||
return this.sha && GitService.shortenSha(this.sha);
|
||||
}
|
||||
|
||||
fileUri() {
|
||||
|
||||
@@ -51,7 +51,7 @@ export class GitCommit {
|
||||
}
|
||||
|
||||
get shortSha() {
|
||||
return this.sha.substring(0, 8);
|
||||
return Git.shortenSha(this.sha);
|
||||
}
|
||||
|
||||
get isUncommitted(): boolean {
|
||||
@@ -62,7 +62,7 @@ export class GitCommit {
|
||||
}
|
||||
|
||||
get previousShortSha() {
|
||||
return this.previousSha && this.previousSha.substring(0, 8);
|
||||
return this.previousSha && Git.shortenSha(this.previousSha);
|
||||
}
|
||||
|
||||
get previousUri(): Uri {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
import { Uri } from 'vscode';
|
||||
import { GitCommit, GitCommitType } from './commit';
|
||||
import { Git } from '../git';
|
||||
import { GitStatusFileStatus, IGitStatusFile } from './status';
|
||||
import * as path from 'path';
|
||||
|
||||
@@ -49,7 +50,7 @@ export class GitLogCommit extends GitCommit {
|
||||
}
|
||||
|
||||
get nextShortSha() {
|
||||
return this.nextSha && this.nextSha.substring(0, 8);
|
||||
return this.nextSha && Git.shortenSha(this.nextSha);
|
||||
}
|
||||
|
||||
get nextUri(): Uri {
|
||||
|
||||
@@ -23,7 +23,7 @@ export class GitContentProvider implements TextDocumentContentProvider {
|
||||
}
|
||||
catch (ex) {
|
||||
Logger.error(ex, 'GitContentProvider', 'getVersionedFileText');
|
||||
window.showErrorMessage(`Unable to show Git revision ${data.sha.substring(0, 8)} of '${path.relative(data.repoPath, fileName)}'`);
|
||||
window.showErrorMessage(`Unable to show Git revision ${GitService.shortenSha(data.sha)} of '${path.relative(data.repoPath, fileName)}'`);
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1061,6 +1061,10 @@ export class GitService extends Disposable {
|
||||
return Git.normalizePath(fileName, repoPath);
|
||||
}
|
||||
|
||||
static shortenSha(sha: string) {
|
||||
return Git.shortenSha(sha);
|
||||
}
|
||||
|
||||
static toGitContentUri(sha: string, shortSha: string, fileName: string, repoPath: string, originalFileName?: string): Uri;
|
||||
static toGitContentUri(commit: GitCommit): Uri;
|
||||
static toGitContentUri(uri: GitUri): Uri;
|
||||
|
||||
@@ -4,7 +4,7 @@ import { QuickPickOptions, window } from 'vscode';
|
||||
import { Commands, OpenInRemoteCommandArgs } from '../commands';
|
||||
import { CommandQuickPickItem, getQuickPickIgnoreFocusOut } from './common';
|
||||
import { GlyphChars } from '../constants';
|
||||
import { getNameFromRemoteResource, GitLogCommit, GitRemote, RemoteResource } from '../gitService';
|
||||
import { getNameFromRemoteResource, GitLogCommit, GitRemote, GitService, RemoteResource } from '../gitService';
|
||||
import * as path from 'path';
|
||||
|
||||
export class OpenRemoteCommandQuickPickItem extends CommandQuickPickItem {
|
||||
@@ -43,7 +43,7 @@ export class OpenRemotesCommandQuickPickItem extends CommandQuickPickItem {
|
||||
break;
|
||||
|
||||
case 'commit':
|
||||
const shortSha = resource.sha.substring(0, 8);
|
||||
const shortSha = GitService.shortenSha(resource.sha);
|
||||
description = `$(git-commit) ${shortSha}`;
|
||||
break;
|
||||
|
||||
@@ -67,7 +67,7 @@ export class OpenRemotesCommandQuickPickItem extends CommandQuickPickItem {
|
||||
}
|
||||
}
|
||||
else {
|
||||
const shortFileSha = resource.sha === undefined ? '' : resource.sha.substring(0, 8);
|
||||
const shortFileSha = resource.sha === undefined ? '' : GitService.shortenSha(resource.sha);
|
||||
description = `$(file-text) ${path.basename(resource.fileName)}${shortFileSha ? ` in ${GlyphChars.Space}$(git-commit) ${shortFileSha}` : ''}`;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -4,7 +4,7 @@ import { commands, QuickPickOptions, TextDocumentShowOptions, Uri, window } from
|
||||
import { Commands, DiffWithWorkingCommandArgs, OpenChangedFilesCommandArgs, ShowQuickBranchHistoryCommandArgs, ShowQuickRepoStatusCommandArgs, ShowQuickStashListCommandArgs } from '../commands';
|
||||
import { CommandQuickPickItem, getQuickPickIgnoreFocusOut, OpenFileCommandQuickPickItem, QuickPickItem } from './common';
|
||||
import { GlyphChars } from '../constants';
|
||||
import { GitStatus, GitStatusFile, GitUri } from '../gitService';
|
||||
import { GitService, GitStatus, GitStatusFile, GitUri } from '../gitService';
|
||||
import { Keyboard, Keys } from '../keyboard';
|
||||
import * as path from 'path';
|
||||
|
||||
@@ -182,7 +182,7 @@ export class RepoStatusQuickPick {
|
||||
if (status.upstream && status.state.behind) {
|
||||
items.splice(0, 0, new CommandQuickPickItem({
|
||||
label: `$(cloud-download)${GlyphChars.Space} ${status.state.behind} Commit${status.state.behind > 1 ? 's' : ''} behind ${GlyphChars.Space}$(git-branch) ${status.upstream}`,
|
||||
description: `${Strings.pad(GlyphChars.Dash, 2, 3)} shows commits in ${GlyphChars.Space}$(git-branch) ${status.upstream} but not ${GlyphChars.Space}$(git-branch) ${status.branch}${status.sha ? ` (since ${GlyphChars.Space}$(git-commit) ${status.sha.substring(0, 8)})` : ''}`
|
||||
description: `${Strings.pad(GlyphChars.Dash, 2, 3)} shows commits in ${GlyphChars.Space}$(git-branch) ${status.upstream} but not ${GlyphChars.Space}$(git-branch) ${status.branch}${status.sha ? ` (since ${GlyphChars.Space}$(git-commit) ${GitService.shortenSha(status.sha)})` : ''}`
|
||||
}, Commands.ShowQuickBranchHistory, [
|
||||
new GitUri(Uri.file(status.repoPath), { fileName: '', repoPath: status.repoPath, sha: `${status.branch}..${status.upstream}` }),
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user