我試圖在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