Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
8e5752ba
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,发现更多精彩内容 >>
提交
8e5752ba
编写于
1月 21, 2020
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto comtinue sync if there are no conflicts
上级
d4dfc8b3
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
34 addition
and
7 deletion
+34
-7
src/vs/platform/userDataSync/common/settingsMerge.ts
src/vs/platform/userDataSync/common/settingsMerge.ts
+5
-4
src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts
...vs/workbench/contrib/userDataSync/browser/userDataSync.ts
+29
-3
未找到文件。
src/vs/platform/userDataSync/common/settingsMerge.ts
浏览文件 @
8e5752ba
...
...
@@ -188,19 +188,20 @@ export function merge(originalLocalContent: string, originalRemoteContent: strin
}
}
const
hasConflicts
=
conflicts
.
size
>
0
||
!
areSame
(
localContent
,
remoteContent
,
ignored
);
const
hasLocalChanged
=
hasConflicts
||
!
areSame
(
localContent
,
originalLocalContent
,
new
Set
<
string
>
()
);
const
hasRemoteChanged
=
hasConflicts
||
!
areSame
(
remoteContent
,
originalRemoteContent
,
new
Set
<
string
>
()
);
const
hasConflicts
=
conflicts
.
size
>
0
||
!
areSame
(
localContent
,
remoteContent
,
ignored
Settings
);
const
hasLocalChanged
=
hasConflicts
||
!
areSame
(
localContent
,
originalLocalContent
,
[]
);
const
hasRemoteChanged
=
hasConflicts
||
!
areSame
(
remoteContent
,
originalRemoteContent
,
[]
);
return
{
localContent
:
hasLocalChanged
?
localContent
:
null
,
remoteContent
:
hasRemoteChanged
?
remoteContent
:
null
,
conflictsSettings
:
values
(
conflicts
),
hasConflicts
};
}
function
areSame
(
localContent
:
string
,
remoteContent
:
string
,
ignored
:
Set
<
string
>
):
boolean
{
export
function
areSame
(
localContent
:
string
,
remoteContent
:
string
,
ignoredSettings
:
string
[]
):
boolean
{
if
(
localContent
===
remoteContent
)
{
return
true
;
}
const
local
=
parse
(
localContent
);
const
remote
=
parse
(
remoteContent
);
const
ignored
=
ignoredSettings
.
reduce
((
set
,
key
)
=>
{
set
.
add
(
key
);
return
set
;
},
new
Set
<
string
>
());
const
localTree
=
parseSettings
(
localContent
).
filter
(
node
=>
!
(
node
.
setting
&&
ignored
.
has
(
node
.
setting
.
key
)));
const
remoteTree
=
parseSettings
(
remoteContent
).
filter
(
node
=>
!
(
node
.
setting
&&
ignored
.
has
(
node
.
setting
.
key
)));
...
...
src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts
浏览文件 @
8e5752ba
...
...
@@ -45,6 +45,8 @@ import { FloatingClickWidget } from 'vs/workbench/browser/parts/editor/editorWid
import
{
IFileService
}
from
'
vs/platform/files/common/files
'
;
import
{
VSBuffer
}
from
'
vs/base/common/buffer
'
;
import
{
registerEditorContribution
}
from
'
vs/editor/browser/editorExtensions
'
;
import
{
areSame
}
from
'
vs/platform/userDataSync/common/settingsMerge
'
;
import
{
getIgnoredSettings
}
from
'
vs/platform/userDataSync/common/settingsSync
'
;
const
enum
AuthStatus
{
Initializing
=
'
Initializing
'
,
...
...
@@ -83,7 +85,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
@
IOutputService
private
readonly
outputService
:
IOutputService
,
@
IUserDataAuthTokenService
private
readonly
userDataAuthTokenService
:
IUserDataAuthTokenService
,
@
IUserDataAutoSyncService
userDataAutoSyncService
:
IUserDataAutoSyncService
,
@
ITextModelService
textModelResolverService
:
ITextModelService
,
@
ITextModelService
private
readonly
textModelResolverService
:
ITextModelService
,
)
{
super
();
this
.
userDataSyncStore
=
getUserDataSyncStore
(
configurationService
);
...
...
@@ -461,8 +463,9 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
label
=
localize
(
'
keybindings conflicts preview
'
,
"
Keybindings Conflicts (Remote ↔ Local)
"
);
}
if
(
rightResource
)
{
await
this
.
editorService
.
openEditor
({
leftResource
:
toRemoteContentResource
(
this
.
userDataSyncService
.
conflictsSource
!
),
const
leftResource
=
toRemoteContentResource
(
this
.
userDataSyncService
.
conflictsSource
!
);
const
editor
=
await
this
.
editorService
.
openEditor
({
leftResource
,
rightResource
,
label
,
options
:
{
...
...
@@ -471,6 +474,29 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
revealIfVisible
:
true
,
},
});
if
(
editor
?.
input
)
{
const
disposable
=
editor
.
input
.
onDispose
(
async
()
=>
{
disposable
.
dispose
();
this
.
checkAndContinueSync
(
leftResource
,
rightResource
!
);
});
}
}
}
private
async
checkAndContinueSync
(
remoteResource
:
URI
,
previewResource
:
URI
):
Promise
<
void
>
{
const
source
=
getSyncSourceFromRemoteContentResource
(
remoteResource
);
if
(
source
===
undefined
||
this
.
userDataSyncService
.
conflictsSource
!==
source
)
{
return
;
}
const
remoteModelRef
=
await
this
.
textModelResolverService
.
createModelReference
(
remoteResource
);
const
previewModelRef
=
await
this
.
textModelResolverService
.
createModelReference
(
previewResource
!
);
if
(
source
===
SyncSource
.
Settings
)
{
if
(
areSame
(
remoteModelRef
.
object
.
textEditorModel
.
getValue
(),
previewModelRef
.
object
.
textEditorModel
.
getValue
(),
getIgnoredSettings
(
this
.
configurationService
)))
{
await
this
.
userDataSyncService
.
sync
(
true
);
}
}
else
if
(
remoteModelRef
.
object
.
textEditorModel
.
getValue
()
===
previewModelRef
.
object
.
textEditorModel
.
getValue
())
{
await
this
.
userDataSyncService
.
sync
(
true
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录