我试图在vscode中创建一个版本控制扩展。我试图看看vscode中的git实现。令人困惑的部分是文件差异。在git扩展源代码中,为了查看文件更改,使用了vscode.diff
。为了得到原始文件的uri
,新的uri
是通过更改修改文件的uri
的scheme
而生成的。这是如何工作的?git diff如何在vscode git扩展中工作?
例如,
在https://github.com/Microsoft/vscode/blob/master/extensions/git/src/commands.ts,getRightResource
方法,toGitUri
被称为与该文件的URI。 toGitUri
FPGA实现如下,
export function toGitUri(uri: Uri, ref: string, replaceFileExtension = false): Uri {
return uri.with({
scheme: 'git',
path: replaceFileExtension ? `${uri.path}.git` : uri.path,
query: JSON.stringify({
path: uri.fsPath,
ref
})
});
}
这里,toGitUri
只是改变文件的方案从file
到git
与查询。然后将这个uri
连同原始文件uri
一起提供给vscode.diff
以显示git diff。 toGitUri
如何在这里工作?
感谢和问候,
Sathish所在V