build(git-sync): пакет @docmost/git-sync в develop, code-only (#326 step 1 / PR-A) #327
Reference in New Issue
Block a user
Delete Branch "feat/293-A-git-sync-package"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Шаг 1 плана #326 (PR-A): приземляю код пакета
@docmost/git-syncв develop, code-only, без функционала. Исходники конвертера+движка жили только на ветке #119; в develop лежал лишь мёртвый скомпилированныйbuild/. Теперь весь пакет (src + ~700 тестов) под CI, но потребителей в develop нет — git-sync полностью инертен (grep git-syncпоapps/server/srcпусто), рантайм develop не меняется.Это разблокирует #293 (вынести общий пакет-конвертер из ПРИЗЕМЛЁННЫХ исходников develop) и позволяет функционалу #119 лечь ПОСЛЕДНИМ, уже с каноническим форматом.
packages/git-sync: src (lib-конвертер + engine) + тест-корпус + конфиги.packages/git-sync/build/из develop; gitignore на него (собирается в CI/Docker, не коммитим — нет дрейфа src/build).pnpm-lock.yaml: добавлен importer@docmost/git-sync(без пакета в lock — CI-блокер, урок F1).relates to #293, #326 · #119 приземляется шагом 6
How verified (прогоны приложены)
packages/git-synctsc→ EXIT 0, без ошибок.vitest run→ Test Files 51 passed (51); Tests 711 passed | 1 expected-fail (712); 0 failures; 0 type errors.pnpm install --frozen-lockfile(CI-проверка) → EXIT 0 («Lockfile is up to date, resolution step is skipped»).grep -rl "@docmost/git-sync" apps/server/src→ пусто (потребителя нет, рантайм инертен).Checklist
Примечание: тест
schema-editor-ext-contract.test.tsимпортирует@docmost/editor-extбез явной deps в package.json git-sync (резолвится через workspace-hoist) — пред-существующая особенность ветки, перенёс as-is; можно уточнить отдельно.Проверка PR-A против #326 шаг 1 — почти PASS, один блокер
Проверено независимо (fetch + diff по деревьям, не по описанию):
✅ Скоуп чистый: 130 файлов = 128 внутри
packages/git-sync+pnpm-lock.yaml+.gitignore. Ниapps/, ни Dockerfile, ни загрузчика.✅ Исходники байт-в-байт идентичны голове
feat/git-sync(diff src/test/configs пуст) — канон/отсебятина не протащены, guardrail 3 соблюдён.✅ build/ удалён и заигнорен с комментарием про CI/Docker.
✅ Lockfile: аддитивный importer
packages/git-syncс пиннами (1 строка удалена — шум);--frozen-lockfileзаявлен зелёным.✅ Инертность develop подтверждена: потребителей нет.
❌ Блокер: не выметен закоммиченный
packages/git-sync/node_modules— 31 файл. Он пред-существует в develop (приехал туда вместе с мёртвым build/), наfeat/git-syncего НЕТ — ветка чистая, а этот PR, базированный на develop, его унаследовал и оставил. Содержимое — ровно класс F2, за который уже был вердикт мейнтейнера 06-21:../../../../node_modules/.pnpm/...(раскладка стора, регенерируется установкой);node_modules/.bin/(esbuild, tsc, vitest, …);node_modules/.vite/vitest/.../results.json— находка ещё из ревью #119 round-0.Причина, почему это вообще коммитится: в корневом
.gitignoreпаттерн/node_modulesанкерный — вложенныеpackages/*/node_modulesне игнорируются.Что сделать
git rm -r --cached packages/git-sync/node_modules(31 файл) в этом же PR — вычистка мусора пакета это его мандат, как и build/..gitignore: сделать паттерн неанкерным (node_modules/) либо добавитьpackages/*/node_modules/— чтобы класс закрылся, а не инстанс.--frozen-lockfileв чистом чекауте (guardrail 5, вывод приложить): симлинки в сторе могли маскировать нехватку зависимостей.Заметка не-блокер: честно отмеченный тобой импорт
@docmost/editor-extбез явной devDependency — добавь явную devDep либо здесь, либо первым коммитом #293 stage 1, чтобы contract-тест не зависел от hoist-раскладки.После пунктов 1–3 с моей стороны возражений к мержу нет.
Починил блокер (коммит
5edd75da).Блокер (закоммиченный
packages/git-sync/node_modules, 31 файл): fixed.git rm -r --cached packages/git-sync/node_modules— 31 файла из индекса (.bin-шимы, .pnpm-симлинки, вкоммиченный vitest-кэш.vite/.../results.json).git ls-files packages/git-sync/node_modules→ пусто./node_modules→ неанкерныйnode_modules/— теперь вложенныеpackages/*/node_modulesигнорятся на любой глубине. Пруф:git check-ignore packages/git-sync/node_modules/.bin/esbuildпечатает путь (ignored)."@docmost/editor-ext": "workspace:*"в devDependencies git-sync (contract-тест больше не висит на hoist-раскладке).Ре-верификация в чистом чекауте (guardrail 5, всё из локального стора, без сети):
pnpm install --frozen-lockfile→ EXIT 0.packages/git-synctsc→ EXIT 0.vitest run→ 51 files, 711 passed | 1 expected-fail (712), 0 failures, 0 type errors.schema-editor-ext-contract.test.tsизолированно → 2 passed (проходит с явной editor-ext deps).Финальный diff:
.gitignore/packages/git-sync/package.json/pnpm-lock.yaml(M) + 31 удаление node_modules (D). Больше ничего.