@@ -303,21 +303,28 @@ jobs:
303303 - name : Update README (main only)
304304 if : github.ref == 'refs/heads/main'
305305 run : |
306- ACCURACY=$(cat accuracy_value.txt | sed 's/%//g')
306+ ACCURACY=$(sed 's/%//g' accuracy_value.txt )
307307 DATE=$(date '+%Y-%m-%d')
308- sed -i "s/<!--ACCURACY_PLACEHOLDER-->.*<!--END_ACCURACY-->/<!--ACCURACY_PLACEHOLDER-->Accuracy: ${ACCURACY}% (updated: ${DATE})<!--END_ACCURACY-->/" README.md
308+ UPDATE_TEXT="<!--ACCURACY_PLACEHOLDER-->Accuracy: ${ACCURACY}% (updated: ${DATE})<!--END_ACCURACY-->"
309+ ESCAPED_UPDATE_TEXT=$(printf '%s\n' "$UPDATE_TEXT" | sed 's/[&|\\]/\\&/g')
310+ sed -i "s|<!--ACCURACY_PLACEHOLDER-->.*<!--END_ACCURACY-->|${ESCAPED_UPDATE_TEXT}|" README.md
309311
310312 - name : Commit and push changes (main only)
311313 if : github.ref == 'refs/heads/main'
312314 run : |
313315 git config --global user.name "GitHub Actions"
314316 git config --global user.email "actions@github.com"
315317 git add README.md
316- if git diff-index --quiet HEAD -- ; then
318+ if git diff --cached --quiet ; then
317319 echo "No changes to commit"
318320 else
319321 git commit -m "[CI] Update accuracy: $(cat accuracy_value.txt)"
320- git push origin main
322+ for attempt in 1 2 3 4 5; do
323+ git pull --rebase origin main && git push origin HEAD:main && break
324+ git rebase --abort || true
325+ [ "$attempt" -eq 5 ] && { echo "Failed to push README update after ${attempt} attempts"; exit 1; }
326+ sleep 5
327+ done
321328 fi
322329
323330 download-dataset :
@@ -509,11 +516,12 @@ jobs:
509516 cat accuracy_${{ matrix.model }}.txt
510517 exit 1
511518 fi
512-
519+
513520 UPDATE_TEXT="<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->Accuracy : Top-1: ${TOP1_ACC}% | Top-5: ${TOP5_ACC}% (updated: ${DATE})<!--END_ACCURACY_${{ matrix.model }}-->"
514-
521+ ESCAPED_UPDATE_TEXT=$(printf '%s\n' "$UPDATE_TEXT" | sed 's/[&|\\]/\\&/g')
522+
515523 if grep -q "<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->" README.md; then
516- sed -i "s|<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->.*<!--END_ACCURACY_${{ matrix.model }}-->|${UPDATE_TEXT }|" README.md
524+ sed -i "s|<!--ACCURACY_${{ matrix.model }}_PLACEHOLDER-->.*<!--END_ACCURACY_${{ matrix.model }}-->|${ESCAPED_UPDATE_TEXT }|" README.md
517525 else
518526 echo "Ошибка : Плейсхолдер <!--ACCURACY_${{ matrix.model }}_PLACEHOLDER--> не найден в README.md"
519527 echo "Содержимое README.md:"
@@ -527,9 +535,14 @@ jobs:
527535 git config --global user.name "GitHub Actions"
528536 git config --global user.email "actions@github.com"
529537 git add README.md
530- if git diff-index --quiet HEAD -- ; then
538+ if git diff --cached --quiet ; then
531539 echo "No changes to commit"
532540 else
533541 git commit -m "[CI] Update accuracy for ${{ matrix.model }}: $(cat accuracy_value_${{ matrix.model }}.txt)"
534- git push origin main
542+ for attempt in 1 2 3 4 5; do
543+ git pull --rebase origin main && git push origin HEAD:main && break
544+ git rebase --abort || true
545+ [ "$attempt" -eq 5 ] && { echo "Failed to push README update after ${attempt} attempts"; exit 1; }
546+ sleep 5
547+ done
535548 fi
0 commit comments