diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-03 22:39:17 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-03 22:39:17 +0900 |
| commit | cccdce42f6eb5c21179bf7b2fbd482a7d29c3b9d (patch) | |
| tree | 70911b19ae54a2771fbd20411f5f217e6930f38a /crates/mozart-core/src/package.rs | |
| parent | 94d217dc9a6a23b6bcd695b776a34ac0db0ce539 (diff) | |
| download | php-mozart-cccdce42f6eb5c21179bf7b2fbd482a7d29c3b9d.tar.gz php-mozart-cccdce42f6eb5c21179bf7b2fbd482a7d29c3b9d.tar.zst php-mozart-cccdce42f6eb5c21179bf7b2fbd482a7d29c3b9d.zip | |
fix(update): wire up the bare-keyword mirrors mode
`update lock`, `update nothing`, and `update mirrors` were treated as
ordinary full updates: the resolver picked the highest matching
version of every root require and the install step rewrote refs from
the repository, masquerading transport metadata refreshes as content
changes (and accepting brand-new root requires the lock had never
seen). Mirror Composer's `setUpdateMirrors(true)` flow:
- Detect the bare-keyword form and skip composer.json's require /
require-dev entirely; require each locked package by exact version
instead. This drops fresh root requires Mozart shouldn't yet honor
and pins existing ones to their lock version.
- After lockfile generation, walk each new entry and copy the OLD
lock's source/dist reference back when the source/dist *type*
matches, mirroring `LockTransaction::updateMirrorAndUrls`. URL and
mirrors update; ref stays put — so a repo rename or mirror flip
emits no Update operation, but a real type change (`hg` → `git`)
still does.
Diffstat (limited to 'crates/mozart-core/src/package.rs')
0 files changed, 0 insertions, 0 deletions
