From b26b47169a1f5f6f2261269405b34cce686e0340 Mon Sep 17 00:00:00 2001 From: giles Date: Wed, 11 Feb 2026 15:11:02 +0000 Subject: [PATCH] CI: use git archive for sibling models (atomic, race-safe) The cp approach failed when sibling repos were mid-update from their own CI runs. git archive reads directly from git objects, and git fetch ensures origin/decoupling is available even if the sibling working tree is on a different branch. Co-Authored-By: Claude Opus 4.6 --- .gitea/workflows/ci.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 72610e5..dd454fa 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -39,13 +39,14 @@ jobs: git fetch origin ${{ github.ref_name }} git reset --hard origin/${{ github.ref_name }} git submodule update --init --recursive - # Copy sibling app models for cross-domain imports + # Copy sibling app models for cross-domain imports (read from git objects to avoid race conditions) for sibling in blog market cart events; do rm -rf \$sibling/__init__.py \$sibling/models - if [ -d /root/rose-ash/\$sibling/models ]; then + repo=/root/rose-ash/\$sibling + if [ -d \$repo/.git ]; then + git -C \$repo fetch origin ${{ github.ref_name }} 2>/dev/null || true mkdir -p \$sibling - cp /root/rose-ash/\$sibling/__init__.py \$sibling/ 2>/dev/null || touch \$sibling/__init__.py - cp -r /root/rose-ash/\$sibling/models \$sibling/models + git -C \$repo archive origin/${{ github.ref_name }} -- __init__.py models/ 2>/dev/null | tar -x -C \$sibling/ || true fi done "