Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
71bb111a
V
vscode
项目概览
掘金者说
/
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,发现更多精彩内容 >>
提交
71bb111a
编写于
5月 11, 2020
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#93960 Ability to compare globalState with current state
上级
5deb0157
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
23 addition
and
6 deletion
+23
-6
src/vs/platform/userDataSync/common/extensionsSync.ts
src/vs/platform/userDataSync/common/extensionsSync.ts
+1
-1
src/vs/platform/userDataSync/common/globalStateSync.ts
src/vs/platform/userDataSync/common/globalStateSync.ts
+22
-5
未找到文件。
src/vs/platform/userDataSync/common/extensionsSync.ts
浏览文件 @
71bb111a
...
...
@@ -39,7 +39,7 @@ interface ILastSyncUserData extends IRemoteUserData {
export
class
ExtensionsSynchroniser
extends
AbstractSynchroniser
implements
IUserDataSynchroniser
{
private
static
readonly
EXTENSIONS_DATA_URI
=
URI
.
from
({
scheme
:
USER_DATA_SYNC_SCHEME
,
authority
:
'
extensions
'
,
path
:
`/
data
.json`
});
private
static
readonly
EXTENSIONS_DATA_URI
=
URI
.
from
({
scheme
:
USER_DATA_SYNC_SCHEME
,
authority
:
'
extensions
'
,
path
:
`/
current
.json`
});
protected
readonly
version
:
number
=
2
;
protected
isEnabled
():
boolean
{
return
super
.
isEnabled
()
&&
this
.
extensionGalleryService
.
isEnabled
();
}
...
...
src/vs/platform/userDataSync/common/globalStateSync.ts
浏览文件 @
71bb111a
...
...
@@ -3,11 +3,11 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
SyncStatus
,
IUserDataSyncStoreService
,
IUserDataSyncLogService
,
IGlobalState
,
SyncResource
,
IUserDataSynchroniser
,
IUserDataSyncEnablementService
,
IUserDataSyncBackupStoreService
,
ISyncResourceHandle
,
IStorageValue
,
ISyncPreviewResult
}
from
'
vs/platform/userDataSync/common/userDataSync
'
;
import
{
SyncStatus
,
IUserDataSyncStoreService
,
IUserDataSyncLogService
,
IGlobalState
,
SyncResource
,
IUserDataSynchroniser
,
IUserDataSyncEnablementService
,
IUserDataSyncBackupStoreService
,
ISyncResourceHandle
,
IStorageValue
,
ISyncPreviewResult
,
USER_DATA_SYNC_SCHEME
}
from
'
vs/platform/userDataSync/common/userDataSync
'
;
import
{
VSBuffer
}
from
'
vs/base/common/buffer
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
dirname
,
joinPath
,
basename
}
from
'
vs/base/common/resources
'
;
import
{
dirname
,
joinPath
,
basename
,
isEqual
}
from
'
vs/base/common/resources
'
;
import
{
IFileService
}
from
'
vs/platform/files/common/files
'
;
import
{
IStringDictionary
}
from
'
vs/base/common/collections
'
;
import
{
edit
}
from
'
vs/platform/userDataSync/common/content
'
;
...
...
@@ -41,6 +41,7 @@ interface ILastSyncUserData extends IRemoteUserData {
export
class
GlobalStateSynchroniser
extends
AbstractSynchroniser
implements
IUserDataSynchroniser
{
private
static
readonly
GLOBAL_STATE_DATA_URI
=
URI
.
from
({
scheme
:
USER_DATA_SYNC_SCHEME
,
authority
:
'
globalState
'
,
path
:
`/current.json`
});
protected
readonly
version
:
number
=
1
;
constructor
(
...
...
@@ -139,28 +140,44 @@ export class GlobalStateSynchroniser extends AbstractSynchroniser implements IUs
async
stop
():
Promise
<
void
>
{
}
async
getAssociatedResources
({
uri
}:
ISyncResourceHandle
):
Promise
<
{
resource
:
URI
,
comparableResource
?:
URI
}[]
>
{
return
[{
resource
:
joinPath
(
uri
,
'
globalState.json
'
)
}];
return
[{
resource
:
joinPath
(
uri
,
'
globalState.json
'
)
,
comparableResource
:
GlobalStateSynchroniser
.
GLOBAL_STATE_DATA_URI
}];
}
async
resolveContent
(
uri
:
URI
):
Promise
<
string
|
null
>
{
if
(
isEqual
(
uri
,
GlobalStateSynchroniser
.
GLOBAL_STATE_DATA_URI
))
{
const
localGlobalState
=
await
this
.
getLocalGlobalState
();
return
this
.
format
(
localGlobalState
);
}
let
content
=
await
super
.
resolveContent
(
uri
);
if
(
content
)
{
return
content
;
}
content
=
await
super
.
resolveContent
(
dirname
(
uri
));
if
(
content
)
{
const
syncData
=
this
.
parseSyncData
(
content
);
if
(
syncData
)
{
switch
(
basename
(
uri
))
{
case
'
globalState.json
'
:
const
edits
=
format
(
syncData
.
content
,
undefined
,
{});
return
applyEdits
(
syncData
.
content
,
edits
);
return
this
.
format
(
JSON
.
parse
(
syncData
.
content
));
}
}
}
return
null
;
}
private
format
(
globalState
:
IGlobalState
):
string
{
const
storageKeys
=
Object
.
keys
(
globalState
.
storage
).
sort
();
const
storage
:
IStringDictionary
<
IStorageValue
>
=
{};
storageKeys
.
forEach
(
key
=>
storage
[
key
]
=
globalState
.
storage
[
key
]);
globalState
.
storage
=
storage
;
const
content
=
JSON
.
stringify
(
globalState
);
const
edits
=
format
(
content
,
undefined
,
{});
return
applyEdits
(
content
,
edits
);
}
async
acceptConflict
(
conflict
:
URI
,
content
:
string
):
Promise
<
void
>
{
throw
new
Error
(
`
${
this
.
syncResourceLogLabel
}
: Conflicts should not occur`
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录