Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
10e0a22f
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,发现更多精彩内容 >>
提交
10e0a22f
编写于
8月 29, 2018
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixes #56015
上级
1eb0b5bc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
55 addition
and
23 deletion
+55
-23
extensions/git/src/main.ts
extensions/git/src/main.ts
+55
-23
未找到文件。
extensions/git/src/main.ts
浏览文件 @
10e0a22f
...
...
@@ -8,7 +8,7 @@
import
*
as
nls
from
'
vscode-nls
'
;
const
localize
=
nls
.
loadMessageBundle
();
import
{
ExtensionContext
,
workspace
,
window
,
Disposable
,
commands
,
Uri
,
OutputChannel
}
from
'
vscode
'
;
import
{
ExtensionContext
,
workspace
,
window
,
Disposable
,
commands
,
Uri
,
OutputChannel
,
WorkspaceFolder
}
from
'
vscode
'
;
import
{
findGit
,
Git
,
IGit
}
from
'
./git
'
;
import
{
Model
}
from
'
./model
'
;
import
{
CommandCenter
}
from
'
./commands
'
;
...
...
@@ -20,6 +20,8 @@ import TelemetryReporter from 'vscode-extension-telemetry';
import
{
GitExtension
}
from
'
./api/git
'
;
import
{
GitProtocolHandler
}
from
'
./protocolHandler
'
;
import
{
createGitExtension
}
from
'
./api/extension
'
;
import
*
as
path
from
'
path
'
;
import
*
as
fs
from
'
fs
'
;
const
deactivateTasks
:
{
():
Promise
<
any
>
;
}[]
=
[];
...
...
@@ -71,6 +73,54 @@ async function createModel(context: ExtensionContext, outputChannel: OutputChann
return
model
;
}
async
function
isGitRepository
(
folder
:
WorkspaceFolder
):
Promise
<
boolean
>
{
if
(
folder
.
uri
.
scheme
!==
'
file
'
)
{
return
false
;
}
const
dotGit
=
path
.
join
(
folder
.
uri
.
fsPath
,
'
.git
'
);
try
{
const
dotGitStat
=
await
new
Promise
<
fs
.
Stats
>
((
c
,
e
)
=>
fs
.
stat
(
dotGit
,
(
err
,
stat
)
=>
err
?
e
(
err
)
:
c
(
stat
)));
return
dotGitStat
.
isDirectory
();
}
catch
(
err
)
{
return
false
;
}
}
async
function
warnAboutMissingGit
():
Promise
<
void
>
{
const
config
=
workspace
.
getConfiguration
(
'
git
'
);
const
shouldIgnore
=
config
.
get
<
boolean
>
(
'
ignoreMissingGitWarning
'
)
===
true
;
if
(
shouldIgnore
)
{
return
;
}
if
(
!
workspace
.
workspaceFolders
)
{
return
;
}
const
areGitRepositories
=
await
Promise
.
all
(
workspace
.
workspaceFolders
.
map
(
isGitRepository
));
if
(
areGitRepositories
.
every
(
isGitRepository
=>
!
isGitRepository
))
{
return
;
}
const
download
=
localize
(
'
downloadgit
'
,
"
Download Git
"
);
const
neverShowAgain
=
localize
(
'
neverShowAgain
'
,
"
Don't Show Again
"
);
const
choice
=
await
window
.
showWarningMessage
(
localize
(
'
notfound
'
,
"
Git not found. Install it or configure it using the 'git.path' setting.
"
),
download
,
neverShowAgain
);
if
(
choice
===
download
)
{
commands
.
executeCommand
(
'
vscode.open
'
,
Uri
.
parse
(
'
https://git-scm.com/
'
));
}
else
if
(
choice
===
neverShowAgain
)
{
await
config
.
update
(
'
ignoreMissingGitWarning
'
,
true
,
true
);
}
}
export
async
function
activate
(
context
:
ExtensionContext
):
Promise
<
GitExtension
>
{
const
disposables
:
Disposable
[]
=
[];
context
.
subscriptions
.
push
(
new
Disposable
(()
=>
Disposable
.
from
(...
disposables
).
dispose
()));
...
...
@@ -100,28 +150,10 @@ export async function activate(context: ExtensionContext): Promise<GitExtension>
throw
err
;
}
const
config
=
workspace
.
getConfiguration
(
'
git
'
);
const
shouldIgnore
=
config
.
get
<
boolean
>
(
'
ignoreMissingGitWarning
'
)
===
true
;
if
(
!
shouldIgnore
)
{
console
.
warn
(
err
.
message
);
outputChannel
.
appendLine
(
err
.
message
);
outputChannel
.
show
();
const
download
=
localize
(
'
downloadgit
'
,
"
Download Git
"
);
const
neverShowAgain
=
localize
(
'
neverShowAgain
'
,
"
Don't Show Again
"
);
const
choice
=
await
window
.
showWarningMessage
(
localize
(
'
notfound
'
,
"
Git not found. Install it or configure it using the 'git.path' setting.
"
),
download
,
neverShowAgain
);
if
(
choice
===
download
)
{
commands
.
executeCommand
(
'
vscode.open
'
,
Uri
.
parse
(
'
https://git-scm.com/
'
));
}
else
if
(
choice
===
neverShowAgain
)
{
await
config
.
update
(
'
ignoreMissingGitWarning
'
,
true
,
true
);
}
}
console
.
warn
(
err
.
message
);
outputChannel
.
appendLine
(
err
.
message
);
await
warnAboutMissingGit
();
return
createGitExtension
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录