Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
f73c34eb
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,发现更多精彩内容 >>
提交
f73c34eb
编写于
2月 17, 2017
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
git: revert selected ranges
上级
a017fdeb
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
53 addition
and
1 deletion
+53
-1
extensions/git/package.json
extensions/git/package.json
+5
-0
extensions/git/package.nls.json
extensions/git/package.nls.json
+1
-0
extensions/git/src/commands.ts
extensions/git/src/commands.ts
+47
-1
未找到文件。
extensions/git/package.json
浏览文件 @
f73c34eb
...
@@ -80,6 +80,11 @@
...
@@ -80,6 +80,11 @@
"title"
:
"%command.stageSelectedRanges%"
,
"title"
:
"%command.stageSelectedRanges%"
,
"category"
:
"Git"
"category"
:
"Git"
},
},
{
"command"
:
"git.revertSelectedRanges"
,
"title"
:
"%command.revertSelectedRanges%"
,
"category"
:
"Git"
},
{
{
"command"
:
"git.unstage"
,
"command"
:
"git.unstage"
,
"title"
:
"%command.unstage%"
,
"title"
:
"%command.unstage%"
,
...
...
extensions/git/package.nls.json
浏览文件 @
f73c34eb
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
"command.stage"
:
"Stage"
,
"command.stage"
:
"Stage"
,
"command.stageAll"
:
"Stage All"
,
"command.stageAll"
:
"Stage All"
,
"command.stageSelectedRanges"
:
"Stage Selected Ranges"
,
"command.stageSelectedRanges"
:
"Stage Selected Ranges"
,
"command.revertSelectedRanges"
:
"Revert Selected Ranges"
,
"command.unstage"
:
"Unstage"
,
"command.unstage"
:
"Unstage"
,
"command.unstageAll"
:
"Unstage All"
,
"command.unstageAll"
:
"Unstage All"
,
"command.unstageSelectedRanges"
:
"Unstage Selected Ranges"
,
"command.unstageSelectedRanges"
:
"Unstage Selected Ranges"
,
...
...
extensions/git/src/commands.ts
浏览文件 @
f73c34eb
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
'
use strict
'
;
'
use strict
'
;
import
{
Uri
,
commands
,
scm
,
Disposable
,
SCMResourceGroup
,
SCMResource
,
window
,
workspace
,
QuickPickItem
,
OutputChannel
,
computeDiff
,
Range
}
from
'
vscode
'
;
import
{
Uri
,
commands
,
scm
,
Disposable
,
SCMResourceGroup
,
SCMResource
,
window
,
workspace
,
QuickPickItem
,
OutputChannel
,
computeDiff
,
Range
,
WorkspaceEdit
,
Position
}
from
'
vscode
'
;
import
{
Ref
,
RefType
}
from
'
./git
'
;
import
{
Ref
,
RefType
}
from
'
./git
'
;
import
{
Model
,
Resource
,
Status
,
CommitOptions
}
from
'
./model
'
;
import
{
Model
,
Resource
,
Status
,
CommitOptions
}
from
'
./model
'
;
import
*
as
staging
from
'
./staging
'
;
import
*
as
staging
from
'
./staging
'
;
...
@@ -270,6 +270,52 @@ export class CommandCenter {
...
@@ -270,6 +270,52 @@ export class CommandCenter {
await
this
.
model
.
stage
(
modifiedUri
,
result
);
await
this
.
model
.
stage
(
modifiedUri
,
result
);
}
}
@
command
(
'
git.revertSelectedRanges
'
)
async
revertSelectedRanges
():
Promise
<
void
>
{
const
textEditor
=
window
.
activeTextEditor
;
if
(
!
textEditor
)
{
return
;
}
const
modifiedDocument
=
textEditor
.
document
;
const
modifiedUri
=
modifiedDocument
.
uri
;
if
(
modifiedUri
.
scheme
!==
'
file
'
)
{
return
;
}
const
originalUri
=
modifiedUri
.
with
({
scheme
:
'
git
'
,
query
:
'
~
'
});
const
originalDocument
=
await
workspace
.
openTextDocument
(
originalUri
);
const
diffs
=
await
computeDiff
(
originalDocument
,
modifiedDocument
);
const
selections
=
textEditor
.
selections
;
const
selectedDiffs
=
diffs
.
filter
(
diff
=>
{
const
modifiedRange
=
diff
.
modifiedEndLineNumber
===
0
?
new
Range
(
modifiedDocument
.
lineAt
(
diff
.
modifiedStartLineNumber
-
1
).
range
.
end
,
modifiedDocument
.
lineAt
(
diff
.
modifiedStartLineNumber
).
range
.
start
)
:
new
Range
(
modifiedDocument
.
lineAt
(
diff
.
modifiedStartLineNumber
-
1
).
range
.
start
,
modifiedDocument
.
lineAt
(
diff
.
modifiedEndLineNumber
-
1
).
range
.
end
);
return
selections
.
every
(
selection
=>
!
selection
.
intersection
(
modifiedRange
));
});
if
(
selectedDiffs
.
length
===
diffs
.
length
)
{
return
;
}
const
basename
=
path
.
basename
(
modifiedUri
.
fsPath
);
const
message
=
localize
(
'
confirm revert
'
,
"
Are you sure you want to revert the selected changes in {0}?
"
,
basename
);
const
yes
=
localize
(
'
revert
'
,
"
Revert Changes
"
);
const
pick
=
await
window
.
showWarningMessage
(
message
,
{
modal
:
true
},
yes
);
if
(
pick
!==
yes
)
{
return
;
}
const
result
=
staging
.
applyChanges
(
originalDocument
,
modifiedDocument
,
selectedDiffs
);
const
edit
=
new
WorkspaceEdit
();
edit
.
replace
(
modifiedUri
,
new
Range
(
new
Position
(
0
,
0
),
modifiedDocument
.
lineAt
(
modifiedDocument
.
lineCount
-
1
).
range
.
end
),
result
);
workspace
.
applyEdit
(
edit
);
}
@
command
(
'
git.unstage
'
)
@
command
(
'
git.unstage
'
)
async
unstage
(
uri
:
Uri
):
Promise
<
void
>
{
async
unstage
(
uri
:
Uri
):
Promise
<
void
>
{
const
resource
=
resolveGitResource
(
uri
);
const
resource
=
resolveGitResource
(
uri
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录