Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
564b9a8a
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
564b9a8a
编写于
4月 10, 2017
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
🐛
isolate git uri handling
fixes #23297
上级
0a7bd0a1
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
42 addition
and
30 deletion
+42
-30
extensions/git/src/commands.ts
extensions/git/src/commands.ts
+10
-10
extensions/git/src/contentProvider.ts
extensions/git/src/contentProvider.ts
+5
-13
extensions/git/src/scmProvider.ts
extensions/git/src/scmProvider.ts
+2
-7
extensions/git/src/uri.ts
extensions/git/src/uri.ts
+25
-0
未找到文件。
extensions/git/src/commands.ts
浏览文件 @
564b9a8a
...
...
@@ -8,6 +8,7 @@
import
{
Uri
,
commands
,
scm
,
Disposable
,
window
,
workspace
,
QuickPickItem
,
OutputChannel
,
Range
,
WorkspaceEdit
,
Position
,
LineChange
,
SourceControlResourceState
}
from
'
vscode
'
;
import
{
Ref
,
RefType
,
Git
}
from
'
./git
'
;
import
{
Model
,
Resource
,
Status
,
CommitOptions
,
WorkingTreeGroup
,
IndexGroup
,
MergeGroup
}
from
'
./model
'
;
import
{
toGitUri
,
fromGitUri
}
from
'
./uri
'
;
import
*
as
staging
from
'
./staging
'
;
import
*
as
path
from
'
path
'
;
import
*
as
os
from
'
os
'
;
...
...
@@ -138,10 +139,10 @@ export class CommandCenter {
switch
(
resource
.
type
)
{
case
Status
.
INDEX_MODIFIED
:
case
Status
.
INDEX_RENAMED
:
return
resource
.
original
.
with
({
scheme
:
'
git
'
,
query
:
'
HEAD
'
}
);
return
toGitUri
(
resource
.
original
,
'
HEAD
'
);
case
Status
.
MODIFIED
:
return
resource
.
resourceUri
.
with
({
scheme
:
'
git
'
,
query
:
'
~
'
}
);
return
toGitUri
(
resource
.
resourceUri
,
'
~
'
);
}
}
...
...
@@ -150,14 +151,12 @@ export class CommandCenter {
case
Status
.
INDEX_MODIFIED
:
case
Status
.
INDEX_ADDED
:
case
Status
.
INDEX_COPIED
:
return
resource
.
resourceUri
.
with
({
scheme
:
'
git
'
});
case
Status
.
INDEX_RENAMED
:
return
resource
.
resourceUri
.
with
({
scheme
:
'
git
'
}
);
return
toGitUri
(
resource
.
resourceUri
,
''
);
case
Status
.
INDEX_DELETED
:
case
Status
.
DELETED
:
return
resource
.
resourceUri
.
with
({
scheme
:
'
git
'
,
query
:
'
HEAD
'
}
);
return
toGitUri
(
resource
.
resourceUri
,
'
HEAD
'
);
case
Status
.
MODIFIED
:
case
Status
.
UNTRACKED
:
...
...
@@ -325,7 +324,7 @@ export class CommandCenter {
return
;
}
const
originalUri
=
modifiedUri
.
with
({
scheme
:
'
git
'
,
query
:
'
~
'
}
);
const
originalUri
=
toGitUri
(
modifiedUri
,
'
~
'
);
const
originalDocument
=
await
workspace
.
openTextDocument
(
originalUri
);
const
selections
=
textEditor
.
selections
;
const
selectedDiffs
=
diffs
.
filter
(
diff
=>
{
...
...
@@ -359,7 +358,7 @@ export class CommandCenter {
return
;
}
const
originalUri
=
modifiedUri
.
with
({
scheme
:
'
git
'
,
query
:
'
~
'
}
);
const
originalUri
=
toGitUri
(
modifiedUri
,
'
~
'
);
const
originalDocument
=
await
workspace
.
openTextDocument
(
originalUri
);
const
selections
=
textEditor
.
selections
;
const
selectedDiffs
=
diffs
.
filter
(
diff
=>
{
...
...
@@ -431,7 +430,7 @@ export class CommandCenter {
return
;
}
const
originalUri
=
modifiedUri
.
with
({
scheme
:
'
git
'
,
query
:
'
HEAD
'
}
);
const
originalUri
=
toGitUri
(
modifiedUri
,
'
HEAD
'
);
const
originalDocument
=
await
workspace
.
openTextDocument
(
originalUri
);
const
selections
=
textEditor
.
selections
;
const
selectedDiffs
=
diffs
.
filter
(
diff
=>
{
...
...
@@ -821,7 +820,8 @@ export class CommandCenter {
}
if
(
uri
.
scheme
===
'
git
'
)
{
uri
=
uri
.
with
({
scheme
:
'
file
'
});
const
{
path
}
=
fromGitUri
(
uri
);
uri
=
Uri
.
file
(
path
);
}
if
(
uri
.
scheme
===
'
file
'
)
{
...
...
extensions/git/src/contentProvider.ts
浏览文件 @
564b9a8a
...
...
@@ -7,6 +7,7 @@
import
{
workspace
,
Uri
,
Disposable
,
Event
,
EventEmitter
,
window
}
from
'
vscode
'
;
import
{
debounce
,
throttle
}
from
'
./decorators
'
;
import
{
fromGitUri
}
from
'
./uri
'
;
import
{
Model
}
from
'
./model
'
;
interface
CacheRow
{
...
...
@@ -32,8 +33,7 @@ export class GitContentProvider {
constructor
(
private
model
:
Model
)
{
this
.
disposables
.
push
(
model
.
onDidChangeRepository
(
this
.
eventuallyFireChangeEvents
,
this
),
workspace
.
registerTextDocumentContentProvider
(
'
git
'
,
this
),
workspace
.
registerTextDocumentContentProvider
(
'
git-original
'
,
this
)
workspace
.
registerTextDocumentContentProvider
(
'
git
'
,
this
)
);
setInterval
(()
=>
this
.
cleanup
(),
FIVE_MINUTES
);
...
...
@@ -59,25 +59,17 @@ export class GitContentProvider {
this
.
cache
[
cacheKey
]
=
cacheValue
;
if
(
uri
.
scheme
===
'
git-original
'
)
{
try
{
return
await
this
.
model
.
show
(
''
,
uri
.
query
);
}
catch
(
err
)
{
return
''
;
}
}
let
ref
=
uri
.
query
;
let
{
path
,
ref
}
=
fromGitUri
(
uri
);
if
(
ref
===
'
~
'
)
{
const
fileUri
=
uri
.
with
({
scheme
:
'
file
'
,
query
:
''
}
);
const
fileUri
=
Uri
.
file
(
path
);
const
uriString
=
fileUri
.
toString
();
const
[
indexStatus
]
=
this
.
model
.
indexGroup
.
resources
.
filter
(
r
=>
r
.
original
.
toString
()
===
uriString
);
ref
=
indexStatus
?
''
:
'
HEAD
'
;
}
try
{
return
await
this
.
model
.
show
(
ref
,
uri
.
fsP
ath
);
return
await
this
.
model
.
show
(
ref
,
p
ath
);
}
catch
(
err
)
{
return
''
;
}
...
...
extensions/git/src/scmProvider.ts
浏览文件 @
564b9a8a
...
...
@@ -10,6 +10,7 @@ import { Model, State } from './model';
import
{
StatusBarCommands
}
from
'
./statusbar
'
;
import
{
CommandCenter
}
from
'
./commands
'
;
import
{
mapEvent
}
from
'
./util
'
;
import
{
toGitUri
}
from
'
./uri
'
;
import
*
as
nls
from
'
vscode-nls
'
;
const
localize
=
nls
.
loadMessageBundle
();
...
...
@@ -99,13 +100,7 @@ export class GitSCMProvider {
return
;
}
// As a mitigation for extensions like ESLint showing warnings and errors
// for git URIs, let's change the file extension of these uris to .git.
return
new
Uri
().
with
({
scheme
:
'
git-original
'
,
query
:
uri
.
fsPath
,
path
:
uri
.
path
+
'
.git
'
});
return
toGitUri
(
uri
,
''
);
}
private
onDidModelChange
():
void
{
...
...
extensions/git/src/uri.ts
0 → 100644
浏览文件 @
564b9a8a
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
{
Uri
}
from
'
vscode
'
;
export
function
fromGitUri
(
uri
:
Uri
):
{
path
:
string
;
ref
:
string
;
}
{
return
JSON
.
parse
(
uri
.
query
);
}
// As a mitigation for extensions like ESLint showing warnings and errors
// for git URIs, let's change the file extension of these uris to .git.
export
function
toGitUri
(
uri
:
Uri
,
ref
:
string
):
Uri
{
return
uri
.
with
({
scheme
:
'
git
'
,
path
:
`
${
uri
.
path
}
.git`
,
query
:
JSON
.
stringify
({
path
:
uri
.
fsPath
,
ref
})
});
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录