Skip to content

Commit 008143b

Browse files
authored
Check edit session schema version before applying it (microsoft#152118)
Check edit session schema version before applying
1 parent 7d729bb commit 008143b

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/vs/workbench/contrib/sessionSync/browser/sessionSync.contribution.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle
1010
import { Action2, MenuId, registerAction2 } from 'vs/platform/actions/common/actions';
1111
import { ServicesAccessor } from 'vs/editor/browser/editorExtensions';
1212
import { localize } from 'vs/nls';
13-
import { ISessionSyncWorkbenchService, Change, ChangeType, Folder, EditSession, FileType, EDIT_SESSION_SYNC_TITLE } from 'vs/workbench/services/sessionSync/common/sessionSync';
13+
import { ISessionSyncWorkbenchService, Change, ChangeType, Folder, EditSession, FileType, EDIT_SESSION_SYNC_TITLE, EditSessionSchemaVersion } from 'vs/workbench/services/sessionSync/common/sessionSync';
1414
import { ISCMRepository, ISCMService } from 'vs/workbench/contrib/scm/common/scm';
1515
import { IFileService } from 'vs/platform/files/common/files';
1616
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
@@ -26,6 +26,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
2626
import { INotificationService } from 'vs/platform/notification/common/notification';
2727
import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
2828
import { ILogService } from 'vs/platform/log/common/log';
29+
import { IProductService } from 'vs/platform/product/common/productService';
2930

3031
registerSingleton(ISessionSyncWorkbenchService, SessionSyncWorkbenchService);
3132

@@ -51,6 +52,7 @@ export class SessionSyncContribution extends Disposable implements IWorkbenchCon
5152
@INotificationService private readonly notificationService: INotificationService,
5253
@IDialogService private readonly dialogService: IDialogService,
5354
@ILogService private readonly logService: ILogService,
55+
@IProductService private readonly productService: IProductService,
5456
@IConfigurationService private configurationService: IConfigurationService,
5557
@IWorkspaceContextService private readonly contextService: IWorkspaceContextService,
5658
) {
@@ -126,6 +128,11 @@ export class SessionSyncContribution extends Disposable implements IWorkbenchCon
126128
return;
127129
}
128130

131+
if (editSession.version > EditSessionSchemaVersion) {
132+
this.notificationService.error(localize('client too old', "Please upgrade to a newer version of {0} to apply this edit session.", this.productService.nameLong));
133+
return;
134+
}
135+
129136
try {
130137
const changes: ({ uri: URI; type: ChangeType; contents: string | undefined })[] = [];
131138
let hasLocalUncommittedChanges = false;

src/vs/workbench/services/sessionSync/common/sessionSync.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ export interface Folder {
4646
workingChanges: Change[];
4747
}
4848

49+
export const EditSessionSchemaVersion = 1;
50+
4951
export interface EditSession {
50-
version: 1;
52+
version: number;
5153
folders: Folder[];
5254
}

0 commit comments

Comments
 (0)