提交 9e484995 编写于 作者: D Daniel Imms

Discard backups on exit

上级 a8b4f276
......@@ -104,9 +104,17 @@ export interface IFileService {
*/
del(resource: URI, useTrash?: boolean): TPromise<void>;
// TODO: doc
/**
* Backs up the provided file to a temporary directory to be used by the hot
* exit feature and crash recovery.
*/
backupFile(resource: URI, content: string): TPromise<IFileStat>;
/**
* Discards all backups associated with this session.
*/
discardBackups(): TPromise<void>;
/**
* Imports the file to the parent identified by the resource.
*/
......
......@@ -119,7 +119,8 @@ export abstract class TextFileService implements ITextFileService {
if (this.getDirty().length) {
// If hot exit is enabled then save the dirty files in the workspace and then exit
if (this.configuredHotExit) {
// TODO: Do last minute backup if needed
// TODO: Do a last minute backup if required
// TODO: If this is the only instance opened, perform hot exit
}
// If auto save is enabled, save all files and then check again for dirty files
......@@ -129,6 +130,7 @@ export abstract class TextFileService implements ITextFileService {
return this.confirmBeforeShutdown(); // we still have dirty files around, so confirm normally
}
this.fileService.discardBackups();
return false; // all good, no veto
});
}
......@@ -137,6 +139,7 @@ export abstract class TextFileService implements ITextFileService {
return this.confirmBeforeShutdown();
}
this.fileService.discardBackups();
return false; // no veto
}
......@@ -150,12 +153,14 @@ export abstract class TextFileService implements ITextFileService {
return true; // veto if some saves failed
}
this.fileService.discardBackups();
return false; // no veto
});
}
// Don't Save
else if (confirm === ConfirmResult.DONT_SAVE) {
this.fileService.discardBackups();
return false; // no veto
}
......
......@@ -233,10 +233,13 @@ export class FileService implements IFileService {
}
public backupFile(resource: uri, content: string): TPromise<IFileStat> {
// TODO: Use this.environmentService.userDataPath as backup path
return this.raw.backupFile(resource, content);
}
public discardBackups(): TPromise<void> {
return this.raw.discardBackups();
}
private doMoveItemToTrash(resource: uri): TPromise<void> {
const workspace = this.contextService.getWorkspace();
if (!workspace) {
......
......@@ -441,9 +441,14 @@ export class FileService implements IFileService {
var backupPath = paths.join(this.environmentService.userDataPath, 'File Backups', FileService.SESSION_BACKUP_ID, backupName);
let backupResource = uri.file(backupPath);
console.log(`Backing up to ${backupResource.fsPath}`);
return this.updateContent(backupResource, content);
}
public discardBackups(): TPromise<void> {
return this.del(uri.file(paths.join(this.environmentService.userDataPath, 'File Backups', FileService.SESSION_BACKUP_ID)));
}
// Helpers
private toAbsolutePath(arg1: uri | IFileStat): string {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册