mirror of
https://github.com/Microsoft/vscode
synced 2024-10-31 10:00:51 +00:00
Merge commit 'refs/pull/49397/head' of github.com:Microsoft/vscode into pr/49397
This commit is contained in:
commit
3f9e71722d
2 changed files with 28 additions and 2 deletions
|
@ -751,6 +751,27 @@ export class Repository {
|
|||
return { mode, object, size: parseInt(size) };
|
||||
}
|
||||
|
||||
async lstreeOutput(treeish: string, path: string): Promise<string> {
|
||||
if (!treeish) { // index
|
||||
const { stdout } = await this.run(['ls-files', '--stage', '--', path]);
|
||||
return stdout;
|
||||
}
|
||||
|
||||
const { stdout } = await this.run(['ls-tree', '-l', treeish, '--', path]);
|
||||
return stdout;
|
||||
}
|
||||
|
||||
async relativePathToGitRelativePath(treeish: string, path: string): Promise<string> {
|
||||
let gitPath: string = path;
|
||||
const pathPrefix = path.substring(0, path.lastIndexOf('/'));
|
||||
const lstOutput = await this.lstreeOutput(treeish, pathPrefix + '/');
|
||||
const findResult = lstOutput.toUpperCase().indexOf(path.toUpperCase());
|
||||
if (findResult) {
|
||||
gitPath = lstOutput.substr(findResult, path.length);
|
||||
}
|
||||
return gitPath;
|
||||
}
|
||||
|
||||
async detectObjectType(object: string): Promise<{ mimetype: string, encoding?: string }> {
|
||||
const child = await this.stream(['show', object]);
|
||||
const buffer = await readBytes(child.stdout, 4100);
|
||||
|
|
|
@ -876,12 +876,17 @@ export class Repository implements Disposable {
|
|||
}
|
||||
|
||||
async show(ref: string, filePath: string): Promise<string> {
|
||||
return this.run(Operation.Show, () => {
|
||||
const relativePath = path.relative(this.repository.root, filePath).replace(/\\/g, '/');
|
||||
return this.run(Operation.Show, async () => {
|
||||
let relativePath = path.relative(this.repository.root, filePath).replace(/\\/g, '/');
|
||||
const configFiles = workspace.getConfiguration('files', Uri.file(filePath));
|
||||
const defaultEncoding = configFiles.get<string>('encoding');
|
||||
const autoGuessEncoding = configFiles.get<boolean>('autoGuessEncoding');
|
||||
|
||||
if (ref === '') {
|
||||
ref = 'HEAD';
|
||||
}
|
||||
|
||||
relativePath = await this.repository.relativePathToGitRelativePath(ref, relativePath);
|
||||
return this.repository.bufferString(`${ref}:${relativePath}`, defaultEncoding, autoGuessEncoding);
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue