Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
4f8311c1
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,发现更多精彩内容 >>
提交
4f8311c1
编写于
5月 17, 2019
作者:
M
Mark Spanbroek
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support negated .gitignore rules.
Fixes issues #69035 and #38112.
上级
40ae7f03
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
3 deletion
+19
-3
extensions/git/src/repository.ts
extensions/git/src/repository.ts
+19
-3
未找到文件。
extensions/git/src/repository.ts
浏览文件 @
4f8311c1
...
...
@@ -1156,7 +1156,7 @@ export class Repository implements Disposable {
}
// https://git-scm.com/docs/git-check-ignore#git-check-ignore--z
const
child
=
this
.
repository
.
stream
([
'
check-ignore
'
,
'
-z
'
,
'
--stdin
'
],
{
stdio
:
[
null
,
null
,
null
]
});
const
child
=
this
.
repository
.
stream
([
'
check-ignore
'
,
'
-
v
'
,
'
-
z
'
,
'
--stdin
'
],
{
stdio
:
[
null
,
null
,
null
]
});
child
.
stdin
.
end
(
filePaths
.
join
(
'
\
0
'
),
'
utf8
'
);
const
onExit
=
(
exitCode
:
number
)
=>
{
...
...
@@ -1164,8 +1164,7 @@ export class Repository implements Disposable {
// nothing ignored
resolve
(
new
Set
<
string
>
());
}
else
if
(
exitCode
===
0
)
{
// paths are separated by the null-character
resolve
(
new
Set
<
string
>
(
data
.
split
(
'
\
0
'
)));
resolve
(
new
Set
<
string
>
(
this
.
parseIgnoreCheck
(
data
)));
}
else
{
if
(
/ is in submodule /
.
test
(
stderr
))
{
reject
(
new
GitError
({
stdout
:
data
,
stderr
,
exitCode
,
gitErrorCode
:
GitErrorCodes
.
IsInSubmodule
}));
...
...
@@ -1193,6 +1192,23 @@ export class Repository implements Disposable {
});
}
// Parses output of `git check-ignore -v -z` and returns only those paths
// that are actually ignored by git.
// Matches to a negative pattern (starting with '!') are filtered out.
// See also https://git-scm.com/docs/git-check-ignore#_output.
private
parseIgnoreCheck
(
raw
:
string
):
string
[]
{
const
ignored
=
[];
const
elements
=
raw
.
split
(
'
\
0
'
);
for
(
let
i
=
0
;
i
<
elements
.
length
;
i
+=
4
)
{
const
pattern
=
elements
[
i
+
2
];
const
path
=
elements
[
i
+
3
];
if
(
pattern
&&
!
pattern
.
startsWith
(
'
!
'
))
{
ignored
.
push
(
path
);
}
}
return
ignored
;
}
private
async
run
<
T
>
(
operation
:
Operation
,
runOperation
:
()
=>
Promise
<
T
>
=
()
=>
Promise
.
resolve
<
any
>
(
null
)):
Promise
<
T
>
{
if
(
this
.
state
!==
RepositoryState
.
Idle
)
{
throw
new
Error
(
'
Repository not initialized
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录