Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
6570efce
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,发现更多精彩内容 >>
未验证
提交
6570efce
编写于
5月 14, 2020
作者:
A
Alex Ross
提交者:
GitHub
5月 14, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add git extension API for branches (#97621)
Enables microsoft/vscode-pull-request-github#1781
上级
e0450732
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
28 addition
and
4 deletion
+28
-4
extensions/git/src/api/api1.ts
extensions/git/src/api/api1.ts
+5
-1
extensions/git/src/api/git.d.ts
extensions/git/src/api/git.d.ts
+6
-0
extensions/git/src/git.ts
extensions/git/src/git.ts
+11
-2
extensions/git/src/repository.ts
extensions/git/src/repository.ts
+6
-1
未找到文件。
extensions/git/src/api/api1.ts
浏览文件 @
6570efce
...
...
@@ -5,7 +5,7 @@
import
{
Model
}
from
'
../model
'
;
import
{
Repository
as
BaseRepository
,
Resource
}
from
'
../repository
'
;
import
{
InputBox
,
Git
,
API
,
Repository
,
Remote
,
RepositoryState
,
Branch
,
Ref
,
Submodule
,
Commit
,
Change
,
RepositoryUIState
,
Status
,
LogOptions
,
APIState
,
CommitOptions
,
GitExtension
,
RefType
,
RemoteSourceProvider
,
CredentialsProvider
}
from
'
./git
'
;
import
{
InputBox
,
Git
,
API
,
Repository
,
Remote
,
RepositoryState
,
Branch
,
Ref
,
Submodule
,
Commit
,
Change
,
RepositoryUIState
,
Status
,
LogOptions
,
APIState
,
CommitOptions
,
GitExtension
,
RefType
,
RemoteSourceProvider
,
CredentialsProvider
,
BranchQuery
}
from
'
./git
'
;
import
{
Event
,
SourceControlInputBox
,
Uri
,
SourceControl
,
Disposable
,
commands
}
from
'
vscode
'
;
import
{
mapEvent
}
from
'
../util
'
;
import
{
toGitUri
}
from
'
../uri
'
;
...
...
@@ -159,6 +159,10 @@ export class ApiRepository implements Repository {
return
this
.
_repository
.
getBranch
(
name
);
}
getBranches
(
query
:
BranchQuery
):
Promise
<
Ref
[]
>
{
return
this
.
_repository
.
getBranches
(
query
);
}
setBranchUpstream
(
name
:
string
,
upstream
:
string
):
Promise
<
void
>
{
return
this
.
_repository
.
setBranchUpstream
(
name
,
upstream
);
}
...
...
extensions/git/src/api/git.d.ts
浏览文件 @
6570efce
...
...
@@ -132,6 +132,11 @@ export interface CommitOptions {
empty
?:
boolean
;
}
export
interface
BranchQuery
{
readonly
remote
?:
boolean
;
readonly
contains
?:
string
;
}
export
interface
Repository
{
readonly
rootUri
:
Uri
;
...
...
@@ -171,6 +176,7 @@ export interface Repository {
createBranch
(
name
:
string
,
checkout
:
boolean
,
ref
?:
string
):
Promise
<
void
>
;
deleteBranch
(
name
:
string
,
force
?:
boolean
):
Promise
<
void
>
;
getBranch
(
name
:
string
):
Promise
<
Branch
>
;
getBranches
(
query
:
BranchQuery
):
Promise
<
Ref
[]
>
;
setBranchUpstream
(
name
:
string
,
upstream
:
string
):
Promise
<
void
>
;
getMergeBase
(
ref1
:
string
,
ref2
:
string
):
Promise
<
string
>
;
...
...
extensions/git/src/git.ts
浏览文件 @
6570efce
...
...
@@ -15,7 +15,7 @@ import { assign, groupBy, IDisposable, toDisposable, dispose, mkdirp, readBytes,
import
{
CancellationToken
,
Progress
,
Uri
}
from
'
vscode
'
;
import
{
URI
}
from
'
vscode-uri
'
;
import
{
detectEncoding
}
from
'
./encoding
'
;
import
{
Ref
,
RefType
,
Branch
,
Remote
,
GitErrorCodes
,
LogOptions
,
Change
,
Status
,
CommitOptions
}
from
'
./api/git
'
;
import
{
Ref
,
RefType
,
Branch
,
Remote
,
GitErrorCodes
,
LogOptions
,
Change
,
Status
,
CommitOptions
,
BranchQuery
}
from
'
./api/git
'
;
import
*
as
byline
from
'
byline
'
;
import
{
StringDecoder
}
from
'
string_decoder
'
;
...
...
@@ -1792,13 +1792,17 @@ export class Repository {
.map(([ref]) => ({ name: ref, type: RefType.Head } as Branch));
}
async getRefs(opts?: { sort?: 'alphabetically' | 'committerdate' }): Promise<Ref[]> {
async getRefs(opts?: { sort?: 'alphabetically' | 'committerdate'
, contains?: string
}): Promise<Ref[]> {
const args = ['for-each-ref', '--format', '%(refname) %(objectname)'];
if (opts && opts.sort && opts.sort !== 'alphabetically') {
args.push('--sort', `
-
$
{
opts
.
sort
}
`);
}
if (opts?.contains) {
args.push('--contains', opts.contains);
}
const result = await this.run(args);
const fn = (line: string): Ref | null => {
...
...
@@ -1916,6 +1920,11 @@ export class Repository {
}
}
async
getBranches
(
query
:
BranchQuery
):
Promise
<
Ref
[]
>
{
const
refs
=
await
this
.
getRefs
({
contains
:
query
.
contains
});
return
refs
.
filter
(
value
=>
(
value
.
type
!==
RefType
.
Tag
)
&&
(
query
.
remote
||
!
value
.
remote
));
}
// TODO: Support core.commentChar
stripCommitMessageComments
(
message
:
string
):
string
{
return
message
.
replace
(
/^
\s
*#.*$
\n?
/gm
,
''
).
trim
();
...
...
extensions/git/src/repository.ts
浏览文件 @
6570efce
...
...
@@ -7,7 +7,7 @@ import * as fs from 'fs';
import
*
as
path
from
'
path
'
;
import
{
CancellationToken
,
Command
,
Disposable
,
Event
,
EventEmitter
,
Memento
,
OutputChannel
,
ProgressLocation
,
ProgressOptions
,
scm
,
SourceControl
,
SourceControlInputBox
,
SourceControlInputBoxValidation
,
SourceControlInputBoxValidationType
,
SourceControlResourceDecorations
,
SourceControlResourceGroup
,
SourceControlResourceState
,
ThemeColor
,
Uri
,
window
,
workspace
,
WorkspaceEdit
,
Decoration
}
from
'
vscode
'
;
import
*
as
nls
from
'
vscode-nls
'
;
import
{
Branch
,
Change
,
GitErrorCodes
,
LogOptions
,
Ref
,
RefType
,
Remote
,
Status
,
CommitOptions
}
from
'
./api/git
'
;
import
{
Branch
,
Change
,
GitErrorCodes
,
LogOptions
,
Ref
,
RefType
,
Remote
,
Status
,
CommitOptions
,
BranchQuery
}
from
'
./api/git
'
;
import
{
AutoFetcher
}
from
'
./autofetch
'
;
import
{
debounce
,
memoize
,
throttle
}
from
'
./decorators
'
;
import
{
Commit
,
ForcePushMode
,
GitError
,
Repository
as
BaseRepository
,
Stash
,
Submodule
,
LogFileOptions
}
from
'
./git
'
;
...
...
@@ -279,6 +279,7 @@ export const enum Operation {
Clean
=
'
Clean
'
,
Branch
=
'
Branch
'
,
GetBranch
=
'
GetBranch
'
,
GetBranches
=
'
GetBranches
'
,
SetBranchUpstream
=
'
SetBranchUpstream
'
,
HashObject
=
'
HashObject
'
,
Checkout
=
'
Checkout
'
,
...
...
@@ -1049,6 +1050,10 @@ export class Repository implements Disposable {
return
await
this
.
run
(
Operation
.
GetBranch
,
()
=>
this
.
repository
.
getBranch
(
name
));
}
async
getBranches
(
query
:
BranchQuery
):
Promise
<
Ref
[]
>
{
return
await
this
.
run
(
Operation
.
GetBranches
,
()
=>
this
.
repository
.
getBranches
(
query
));
}
async
setBranchUpstream
(
name
:
string
,
upstream
:
string
):
Promise
<
void
>
{
await
this
.
run
(
Operation
.
SetBranchUpstream
,
()
=>
this
.
repository
.
setBranchUpstream
(
name
,
upstream
));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录