mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-12 13:13:45 +01:00
* [web] read a linked project file's source from history Behind the `linked-file-from-history` flag, a linked `project_file` import reads the source out of the source project's latest history snapshot rather than out of its file tree in mongo, where docs and files are two kinds of thing. - `ProjectFileAgent` gains `_importFromHistory` alongside the existing `_importFromProject`, and the flag picks between them. The snapshot only holds what has reached history, so the source project is flushed through document-updater and project-history first. A file that is editable is loaded eagerly, which applies the edit operations sitting on top of its blob; one that is not keeps its hash and is streamed. The file is promisified on the way. - `History/HistoryOTContentManager.mjs` reads the latest chunk and rolls its changes into a snapshot, retrying the read. `History/HistoryBlobStore.mjs` is the blob store overleaf-editor-core asks for while loading a file. - `LinkedFilesController` resolves the flag, including from the referer: the import endpoints have no query string of their own. Every agent takes the assignment so that the ones that do not read it still pass it along. - `linked-file-from-history.spec.ts` drives the flag from the editor url, over three imports from another project: a file uploaded to the source project and then refreshed from it, an edit the source project has only made in its editor, and a binary file. Both sources produce the same file, so which one was read is asserted in the acceptance tests rather than here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * [saas-e2e] add test coverage for tracked-delete in linked file source * Apply suggestions from code review Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Mathias Jakobsen <mathias.jakobsen@overleaf.com> GitOrigin-RevId: 3907d6d399e4b5315e68bf833663c06bc72f4011
18 lines
580 B
JavaScript
18 lines
580 B
JavaScript
const { merge } = require('@overleaf/settings/merge')
|
|
const ServerCEDefaults = require('../../../config/settings.defaults')
|
|
const base = require('./settings.test.defaults')
|
|
|
|
module.exports = base.mergeWith({
|
|
defaultFeatures: ServerCEDefaults.defaultFeatures,
|
|
activeUserMetricInterval: 100,
|
|
|
|
splitTestOverrides: {
|
|
'sharing-updates-new-link': 'enabled', // routes in acceptance tests
|
|
'linked-file-from-history': 'enabled', // read linked project files from history
|
|
},
|
|
})
|
|
|
|
module.exports.mergeWith = function (overrides) {
|
|
return merge(overrides, module.exports)
|
|
}
|