Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
旅途_2012
vscode
提交
e4d42b6b
V
vscode
项目概览
旅途_2012
/
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,发现更多精彩内容 >>
提交
e4d42b6b
编写于
7月 06, 2018
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
差异文件
Merge commit 'refs/pull/47578/head' of github.com:Microsoft/vscode into pr/47578
上级
80766044
a0282385
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
68 addition
and
10 deletion
+68
-10
extensions/git/src/commands.ts
extensions/git/src/commands.ts
+6
-1
extensions/git/src/git.ts
extensions/git/src/git.ts
+18
-8
extensions/git/src/repository.ts
extensions/git/src/repository.ts
+5
-0
extensions/git/src/test/git.test.ts
extensions/git/src/test/git.test.ts
+39
-1
未找到文件。
extensions/git/src/commands.ts
浏览文件 @
e4d42b6b
...
...
@@ -1176,7 +1176,12 @@ export class CommandCenter {
}
const
commit
=
await
repository
.
getCommit
(
'
HEAD
'
);
await
repository
.
reset
(
'
HEAD~
'
);
if
(
commit
.
previousHashes
.
length
>
0
)
{
await
repository
.
reset
(
'
HEAD~
'
);
}
else
{
await
repository
.
deleteRef
(
'
HEAD
'
);
await
this
.
unstageAll
(
repository
);
}
repository
.
inputBox
.
value
=
commit
.
message
;
}
...
...
extensions/git/src/git.ts
浏览文件 @
e4d42b6b
...
...
@@ -501,6 +501,7 @@ export class Git {
export
interface
Commit
{
hash
:
string
;
message
:
string
;
previousHashes
:
string
[];
}
export
class
GitStatusParser
{
...
...
@@ -631,6 +632,16 @@ export function parseGitmodules(raw: string): Submodule[] {
return
result
;
}
export
function
parseGitCommit
(
raw
:
string
):
Commit
|
null
{
const
match
=
/^
([
0-9a-f
]{40})\n(
.*
)\n([^]
*
)
$/m
.
exec
(
raw
.
trim
());
if
(
!
match
)
{
return
null
;
}
const
previousHashes
=
match
[
2
]
?
match
[
2
].
split
(
'
'
)
:
[];
return
{
hash
:
match
[
1
],
message
:
match
[
3
],
previousHashes
};
}
export
interface
DiffOptions
{
cached
?:
boolean
;
}
...
...
@@ -928,6 +939,11 @@ export class Repository {
await
this
.
run
(
args
);
}
async
deleteRef
(
ref
:
string
):
Promise
<
void
>
{
const
args
=
[
'
update-ref
'
,
'
-d
'
,
ref
];
await
this
.
run
(
args
);
}
async
merge
(
ref
:
string
):
Promise
<
void
>
{
const
args
=
[
'
merge
'
,
ref
];
...
...
@@ -1342,14 +1358,8 @@ export class Repository {
}
async
getCommit
(
ref
:
string
):
Promise
<
Commit
>
{
const
result
=
await
this
.
run
([
'
show
'
,
'
-s
'
,
'
--format=%H
\n
%B
'
,
ref
]);
const
match
=
/^
([
0-9a-f
]{40})\n([^]
*
)
$/m
.
exec
(
result
.
stdout
.
trim
());
if
(
!
match
)
{
return
Promise
.
reject
<
Commit
>
(
'
bad commit format
'
);
}
return
{
hash
:
match
[
1
],
message
:
match
[
2
]
};
const
result
=
await
this
.
run
([
'
show
'
,
'
-s
'
,
'
--format=%H
\n
%P
\n
%B
'
,
ref
]);
return
parseGitCommit
(
result
.
stdout
)
||
Promise
.
reject
<
Commit
>
(
'
bad commit format
'
);
}
async
updateSubmodules
(
paths
:
string
[]):
Promise
<
void
>
{
...
...
extensions/git/src/repository.ts
浏览文件 @
e4d42b6b
...
...
@@ -293,6 +293,7 @@ export enum Operation {
GetCommitTemplate
=
'
GetCommitTemplate
'
,
DeleteBranch
=
'
DeleteBranch
'
,
RenameBranch
=
'
RenameBranch
'
,
DeleteRef
=
'
DeleteRef
'
,
Merge
=
'
Merge
'
,
Ignore
=
'
Ignore
'
,
Tag
=
'
Tag
'
,
...
...
@@ -776,6 +777,10 @@ export class Repository implements Disposable {
await
this
.
run
(
Operation
.
Reset
,
()
=>
this
.
repository
.
reset
(
treeish
,
hard
));
}
async
deleteRef
(
ref
:
string
):
Promise
<
void
>
{
await
this
.
run
(
Operation
.
DeleteRef
,
()
=>
this
.
repository
.
deleteRef
(
ref
));
}
@
throttle
async
fetch
():
Promise
<
void
>
{
await
this
.
run
(
Operation
.
Fetch
,
()
=>
this
.
repository
.
fetch
());
...
...
extensions/git/src/test/git.test.ts
浏览文件 @
e4d42b6b
...
...
@@ -6,7 +6,7 @@
'
use strict
'
;
import
'
mocha
'
;
import
{
GitStatusParser
,
parseGitmodules
}
from
'
../git
'
;
import
{
GitStatusParser
,
parseGit
Commit
,
parseGit
modules
}
from
'
../git
'
;
import
*
as
assert
from
'
assert
'
;
suite
(
'
git
'
,
()
=>
{
...
...
@@ -175,4 +175,42 @@ suite('git', () => {
]);
});
});
suite
(
'
parseGitCommit
'
,
()
=>
{
test
(
'
single previous commit
'
,
()
=>
{
const
GIT_OUTPUT_SINGLE_PARENT
=
`52c293a05038d865604c2284aa8698bd087915a1
8e5a374372b8393906c7e380dbb09349c5385554
This is a commit message.`
;
assert
.
deepEqual
(
parseGitCommit
(
GIT_OUTPUT_SINGLE_PARENT
),
{
hash
:
'
52c293a05038d865604c2284aa8698bd087915a1
'
,
message
:
'
This is a commit message.
'
,
previousHashes
:
[
'
8e5a374372b8393906c7e380dbb09349c5385554
'
]
});
});
test
(
'
multiple previous commits
'
,
()
=>
{
const
GIT_OUTPUT_MULTIPLE_PARENTS
=
`52c293a05038d865604c2284aa8698bd087915a1
8e5a374372b8393906c7e380dbb09349c5385554 df27d8c75b129ab9b178b386077da2822101b217
This is a commit message.`
;
assert
.
deepEqual
(
parseGitCommit
(
GIT_OUTPUT_MULTIPLE_PARENTS
),
{
hash
:
'
52c293a05038d865604c2284aa8698bd087915a1
'
,
message
:
'
This is a commit message.
'
,
previousHashes
:
[
'
8e5a374372b8393906c7e380dbb09349c5385554
'
,
'
df27d8c75b129ab9b178b386077da2822101b217
'
]
});
});
test
(
'
no previous commits
'
,
async
()
=>
{
const
GIT_OUTPUT_NO_PARENTS
=
`52c293a05038d865604c2284aa8698bd087915a1
This is a commit message.`
;
assert
.
deepEqual
(
parseGitCommit
(
GIT_OUTPUT_NO_PARENTS
),
{
hash
:
'
52c293a05038d865604c2284aa8698bd087915a1
'
,
message
:
'
This is a commit message.
'
,
previousHashes
:
[]
});
});
});
});
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录