advance: skip same-name files with differing bytes instead of failing
Incremental advances collide with same-version artifacts that reached the destination through another lineage — the stable -> rc bootstrap seed and native rc builds are not byte-identical to edge's builds of the same version. A collision means the package has not moved in the source since, so keep the destination's published copy and continue; the hard failure also aborted before the db rebuild and sync, leaving the advance half-done. Also stop advancing pinned packages into rc: eligibility deferred to package_builds_for_mirror, whose OMARCHY_RC_PINS gate is never set during an advance, so edge's omarchy/omarchy-settings looked movable — and could have overtaken an in-flight RC pin under a fresh filename.
This commit is contained in:
2 files changed
+11
-7
No files matched your search
@@ -269,6 +269,11 @@ package_builds_for_mirror() {
|
||||
package_moves_to_channel() {
|
||||
local pkgdir="$1" channel="$2"
|
||||
package_in_channel "$pkgdir" "$channel" || return 1
|
||||
# Pinned packages build natively in rc from the release pin. That the
|
||||
# advancing environment lacks OMARCHY_RC_PINS (so *it* may not build them)
|
||||
# does not make the edge copy movable over the pin's artifact — edge's
|
||||
# version can be ahead of the in-flight RC.
|
||||
[[ "$channel" == "rc" ]] && package_is_pinned "$pkgdir" && return 1
|
||||
! package_builds_for_mirror "$pkgdir" "$channel"
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user