Summary: | Одновременная работа скриптов с репозиторием | ||
---|---|---|---|
Product: | [Свободные проекты (Open source projects)] WINE-tests | Reporter: | Александр Морозов <amorozov> |
Component: | Общее | Assignee: | Александр Морозов <amorozov> |
Status: | CLOSED LATER | QA Contact: | |
Severity: | normal | ||
Priority: | P4 | CC: | baraka, lav |
Version: | не указана | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 6264 |
Description
Александр Морозов
2010-11-26 14:35:24 MSK
Логической проблемы нет — содержимое changelog не повторяется. Скрипт формирования changelog переделал — теперь в случае неудачи публикации changelog он не будет его откладывать и потом публиковать два, а будет откатывать изменения, и в следующий раз делать полный changelog. Это должно исключить появление таких changelog. commit d59588fdae21e39eda538036fdcc3f99e5dea130 Author: Vitaly Lipatov <lav@etersoft.ru> Date: Wed Dec 1 13:55:03 2010 +0300 build_funcs: do reset hard if push is failed (see eterbug #6560) diff --git a/tools/cron/build-funcs.sh b/tools/cron/build-funcs.sh @@ -73,7 +72,10 @@ pub_and_push() rpmpub -r $WORKTARGET # will works only if REPOALIAS is origin :) - gpush $REPOALIAS $WORKBRANCH || fatal + gpush $REPOALIAS $WORKBRANCH && return + + # if push is failed + git reset --hard $CURTAG Отправлял сегодня серию из 11 патчей для eter-1.0.12. Часть серии не приложилась из-за того, что в репозиторий добавился коммит "new build 1.0.12-alt7.35 (with rpmlog script)". Для первого отвергнутого патча пришло письмо с заголовком "Your patch is not correctly applied ([eter-1.0.12] eterbugs #3850, #6182)". В письме такая ошибка: [17:56:03]ERROR: wine_repository: Error occured during the 'git push'. Backtrace:Traceback (most recent call last): File "/srv/builder-robot/Projects/wine-tests/git_repository.py", line 55, in publish self.git.execute(["git", "push", "origin", master_name]) File "/usr/lib/python2.6/site-packages/git/cmd.py", line 341, in execute raise GitCommandError(command, status, stderr_value) GitCommandError: 'git push origin eter-1.0.12' returned exit status 1: To git.office:/projects/eterhack.git ! [rejected] eter-1.0.12 -> eter-1.0.12 (non-fast-forward) error: failed to push some refs to 'git.office:/projects/eterhack.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes (e.g. 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details. Думаю, проблему можно обойти, если прикладывать всю серию патчей за один push. (В ответ на comment #4) > Думаю, проблему можно обойти, если прикладывать всю серию патчей за один push. Сейчас патчи рассматриваются независимо. Они не привязываются к конкретному письму. Переделка существующей системы займёт много времени. Вместо этого предлагаю другие решения. Решение 1: объединить приложение патчей и создание нового релиза в один скрипт-обёртку. Сначала скрипт запускает робота, прикладывающего патчи, а затем он запускает скрипт, создающий новый релиз. При этом надо дописать проверку на запуск только одной версии этого скрипта-обёртки. Решение 2: Создать обёртку для скрипта, создающего новый релиз. В обёртке только добавить блокировка повторного запуска. Файл блокировки сделать общим. Таким образом ни один из скриптов не будет запускаться пока работает другое. Возникает только одна проблема: Они не должны запускаться по cron в одинаковое время В последнее время проблема не актуальна. Откладываю. Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять. |