首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在vscode Git扩展中Git diff是如何工作的?

在vscode Git扩展中Git diff是如何工作的?
EN

Stack Overflow用户
提问于 2017-05-08 12:55:18
回答 1查看 1.5K关注 0票数 9

我试图在vscode中创建一个版本控制扩展。我试图查看vscode中的Git实现。令人困惑的部分是文件差异。在git扩展源代码中,为了查看文件更改,使用了vscode.diff。要获得原始文件的uri,通过更改修改文件的urischeme来生成新的uri。这是怎么回事?

例如,在https://github.com/Microsoft/vscode/blob/master/extensions/git/src/commands.tsgetRightResource方法中,使用文件的uri调用toGitUritoGitUri实现如下,

代码语言:javascript
运行
复制
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。toGitUri在这里是如何工作的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-15 07:18:30

我认为这种差别不会发生在这里。我还认为您正确地理解了这个函数的作用:它为磁盘上的文件获取一个文件URI,并为git找到相应的URI。然后对2种资源进行比较。

然后,这2个资源被传递到内置的扩展功能中。

让我们在1.12.1中跟踪代码(一个接一个地链接):

  • vscode.diff注册为这里
  • It 代表们 to _workbench.diff
  • 一个是注册这里代表们到编辑的内置差异.
  • ..。像这样:editorService.openEditor({ leftResource, rightResource, ...) ..。
  • ..。其中,leftResource是磁盘上的文件,而rightResource是git中文件的URI。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43848239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档