UploadToFolderReplacing матчил legacy↔OOXML (.xls ↔ .xlsx) и вызывал UpdateFile.
OnlyOffice не перезапускает конвертацию при update → сырой OLE2 .xls ложился под именем .xlsx (регрессия #82).
Правило
UpdateFile только при совпадении расширений (stored ext == local ext).
Конвертируемое совпадение (.xls/.doc/.ppt ↔ OOXML) → удалить все дубли по stem и залить заново (сервер сконвертирует).
AssertNoFileConflict (--no-replace) остаётся conversion-aware, UpdateFile не использует.
Тесты
go test -race ./..., go vet ./... — зелёные. Offline-тесты planUploadReplacement: exact-ext (pdf/xlsx/xls) → UpdateFile; converted .xls при .xlsx → delete + upload; коллапс дублей.
Live (реальный OO, временная папка, удалена)
1-й upload .xls → .xlsx (8192 B, PK); повтор .xls → replaced=3889, один файл, download Microsoft Excel 2007+; pdf→pdf повтор → тот же id 3890, replaced пусто (UpdateFile).
UploadToFolderReplacing matched legacy->OOXML counterparts (f.xls vs the
saved f.xlsx) and updated them in place. UpdateFile replaces the body without
re-running OnlyOffice's server-side conversion, so the raw OLE2 .xls landed
under the stored .xlsx name and the file would not open (#84).
UpdateFile now runs only when the stored and local extensions are equal.
A conversion-equivalent match is deleted (all duplicates collapsed) and
uploaded afresh, so the server converts again. AssertNoFileConflict stays
conversion-aware for --no-replace and never had an UpdateFile path.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Причина
UploadToFolderReplacingматчил legacy↔OOXML (.xls↔.xlsx) и вызывалUpdateFile.OnlyOffice не перезапускает конвертацию при update → сырой OLE2
.xlsложился под именем.xlsx(регрессия #82).Правило
UpdateFileтолько при совпадении расширений (stored ext == local ext)..xls/.doc/.ppt↔ OOXML) → удалить все дубли по stem и залить заново (сервер сконвертирует).AssertNoFileConflict(--no-replace) остаётся conversion-aware, UpdateFile не использует.Тесты
go test -race ./...,go vet ./...— зелёные. Offline-тестыplanUploadReplacement: exact-ext (pdf/xlsx/xls) → UpdateFile; converted.xlsпри.xlsx→ delete + upload; коллапс дублей.Live (реальный OO, временная папка, удалена)
1-й upload
.xls→.xlsx(8192 B,PK); повтор.xls→replaced=3889, один файл, downloadMicrosoft Excel 2007+;pdf→pdfповтор → тот же id 3890,replacedпусто (UpdateFile).Refs #84