Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 6268 - Откатывать патч из всех репозиториев, если он не приложился хотя бы в один из них   Make a simular bug
Summary: Откатывать патч из всех репозиториев, если он не приложился хотя бы в один из...
Status: CLOSED FIXED
Alias: None
Product: WINE-tests
Classification: Свободные проекты (Open source projects)
Component: Общее (show other bugs)
Version: не указана
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: Виталий Перов
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 6467
Blocks: 6264
  Show dependency treegraph
 
In work:
Reported: 2010-10-22 16:30 MSD by Виталий Перов
Modified: 2011-01-28 12:16 MSK (History)
2 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Виталий Перов 2010-10-22 16:30:42 MSD
Сейчас в функции apply_with_tests() присутствует небольшая ошибка:

Допустим патч должен быть приложен в 2 репозитория.
В первый репозиторий он проходит.
Во второй репозиторий он не проходит.
При этом автору посылается сообщение о том, что патч провалился, и ни один репозиторий не публикуется.

Проблема в том, что в первый репозиторий он приложен, но не опубликован.
Следующий патч может приложится и опубликовать изменения.
Таким образом патч вроде отвергается, но на самом деле прикладывается.

Насколько мне известно, с помощью команд гита нельзя откатится до удалённого репозитория.
Возможно проблема может решится созданием временной ветки. В конце ветка в любом случае удаляется, но если патч был приложен, то перед удалением ветки мержатся с главной
Comment 1 Виталий Перов 2010-11-03 18:02:24 MSK
Реализовал добавление и удаление временной ветки.
Пока не понятно как её мержить (для сохранения результата)
Comment 2 Виталий Перов 2010-11-03 18:13:18 MSK
Проверил через gitk. Создаётся реальная ветка.

После её удаления (через скрипт) ветка исчезает не оставляя никаких следов.

Мержить можно непосредственно через комманду git.
Проблема только в том, что надо знать название ветки в которую мержить.
Comment 3 Виталий Перов 2010-11-08 15:38:45 MSK
Разобрался. Имя ветки можно получать с помощью:
 this_name = self.head.reference.name
 master_name = self.master_branch.name

Реализовал мерж временной ветки.
Надо проверить работает ли это и как результат отражается на дереве git
Comment 4 Виталий Перов 2010-11-08 16:31:01 MSK
Локально протестировал при указании одного репозитория.
Сделал патч.
Можно тестировать на реальных патчах
Comment 5 Виталий Перов 2010-11-10 15:53:01 MSK
Встретил новую проблему:
Если возникает исключение в момент тестирования, то временная ветка tmp не удаляется.
При этом возникает исключение при попытке создать уже существующую ветку tmp.

Пока вижу 2 возможных решения:
1)Принудительно удалять ветку tmp при создании
2)Корректно обрабатывать исключения при запуске тестов. Заодно можно будет посылать лог с бактрейсом автору письма.
Comment 6 Виталий Перов 2010-11-10 15:58:18 MSK
Для воспроизведения проблемы можно добавить заведомо неработающий код в функцию helper.py: run_with_log().
При первом запуске возникает исключение, связанное с неработающим кодом
При втором запуске появится ошибка повторного создания ветки tmp
Comment 7 Виталий Перов 2010-11-15 15:44:44 MSK
Думаю сначала нужно решить багу 6467. При при возникновении падения ветка tmp сама должна удаляться.
Comment 8 Виталий Перов 2010-11-15 17:42:57 MSK
Нашёл ещё одну ошибку:
Ветка tmp не удаляется даже, если исключения не было. Текущей веткой выбирается master, но удаления почему-то не происходит.
Comment 9 Виталий Перов 2010-11-15 19:06:58 MSK
(In reply to comment #8)
> Нашёл ещё одну ошибку:
> Ветка tmp не удаляется даже, если исключения не было. Текущей веткой
> выбирается master, но удаления почему-то не происходит.
> 
Исправлено
Comment 10 Виталий Перов 2011-01-28 12:16:09 MSK
Реализовано. Теперь патчи прикладываются к временной ветке tmp. Если возникли проблемы с одним из репозиториев, то все временные ветки уничтожаются.