Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
WLHYW
vscode
提交
f434f853
V
vscode
项目概览
WLHYW
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f434f853
编写于
1月 27, 2021
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pfs - workaround broken reparse points on windows (fix #115113)
上级
1718be68
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
7 deletion
+26
-7
src/vs/base/node/pfs.ts
src/vs/base/node/pfs.ts
+26
-7
未找到文件。
src/vs/base/node/pfs.ts
浏览文件 @
f434f853
...
...
@@ -3,11 +3,11 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
*
as
fs
from
'
fs
'
;
import
{
tmpdir
}
from
'
os
'
;
import
{
join
}
from
'
vs/base/common/path
'
;
import
{
Queue
}
from
'
vs/base/common/async
'
;
import
*
as
fs
from
'
fs
'
;
import
*
as
os
from
'
os
'
;
import
*
as
platform
from
'
vs/base/common/platform
'
;
import
{
isMacintosh
,
isWindows
}
from
'
vs/base/common/platform
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
promisify
}
from
'
util
'
;
import
{
isRootOrDriveLetter
}
from
'
vs/base/common/extpath
'
;
...
...
@@ -89,7 +89,7 @@ async function rimrafUnlink(path: string): Promise<void> {
async
function
rimrafMove
(
path
:
string
):
Promise
<
void
>
{
try
{
const
pathInTemp
=
join
(
os
.
tmpdir
(),
generateUuid
());
const
pathInTemp
=
join
(
tmpdir
(),
generateUuid
());
try
{
await
rename
(
path
,
pathInTemp
);
}
catch
(
error
)
{
...
...
@@ -151,7 +151,7 @@ export async function readdirWithFileTypes(path: string): Promise<fs.Dirent[]> {
// Mac: uses NFD unicode form on disk, but we want NFC
// See also https://github.com/nodejs/node/issues/2165
if
(
platform
.
isMacintosh
)
{
if
(
isMacintosh
)
{
for
(
const
child
of
children
)
{
child
.
name
=
normalizeNFC
(
child
.
name
);
}
...
...
@@ -167,7 +167,7 @@ export function readdirSync(path: string): string[] {
function
handleDirectoryChildren
(
children
:
string
[]):
string
[]
{
// Mac: uses NFD unicode form on disk, but we want NFC
// See also https://github.com/nodejs/node/issues/2165
if
(
platform
.
isMacintosh
)
{
if
(
isMacintosh
)
{
return
children
.
map
(
child
=>
normalizeNFC
(
child
));
}
...
...
@@ -231,6 +231,25 @@ export async function statLink(path: string): Promise<IStatAndLink> {
return
{
stat
:
lstats
,
symbolicLink
:
{
dangling
:
true
}
};
}
// Windows: workaround a node.js bug where reparse points
// are not supported (https://github.com/nodejs/node/issues/36790)
if
(
isWindows
&&
error
.
code
===
'
EACCES
'
&&
lstats
)
{
try
{
const
stats
=
await
stat
(
await
readlink
(
path
));
return
{
stat
:
stats
,
symbolicLink
:
lstats
.
isSymbolicLink
()
?
{
dangling
:
false
}
:
undefined
};
}
catch
(
error
)
{
// If the link points to a non-existing file we still want
// to return it as result while setting dangling: true flag
if
(
error
.
code
===
'
ENOENT
'
)
{
return
{
stat
:
lstats
,
symbolicLink
:
{
dangling
:
true
}
};
}
throw
error
;
}
}
throw
error
;
}
}
...
...
@@ -294,7 +313,7 @@ export function writeFile(path: string, data: string | Buffer | Uint8Array, opti
function
toQueueKey
(
path
:
string
):
string
{
let
queueKey
=
path
;
if
(
platform
.
isWindows
||
platform
.
isMacintosh
)
{
if
(
isWindows
||
isMacintosh
)
{
queueKey
=
queueKey
.
toLowerCase
();
// accommodate for case insensitive file systems
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录