Сейчас в функции apply_with_tests() присутствует небольшая ошибка: Допустим патч должен быть приложен в 2 репозитория. В первый репозиторий он проходит. Во второй репозиторий он не проходит. При этом автору посылается сообщение о том, что патч провалился, и ни один репозиторий не публикуется. Проблема в том, что в первый репозиторий он приложен, но не опубликован. Следующий патч может приложится и опубликовать изменения. Таким образом патч вроде отвергается, но на самом деле прикладывается. Насколько мне известно, с помощью команд гита нельзя откатится до удалённого репозитория. Возможно проблема может решится созданием временной ветки. В конце ветка в любом случае удаляется, но если патч был приложен, то перед удалением ветки мержатся с главной
Реализовал добавление и удаление временной ветки. Пока не понятно как её мержить (для сохранения результата)
Проверил через gitk. Создаётся реальная ветка. После её удаления (через скрипт) ветка исчезает не оставляя никаких следов. Мержить можно непосредственно через комманду git. Проблема только в том, что надо знать название ветки в которую мержить.
Разобрался. Имя ветки можно получать с помощью: this_name = self.head.reference.name master_name = self.master_branch.name Реализовал мерж временной ветки. Надо проверить работает ли это и как результат отражается на дереве git
Локально протестировал при указании одного репозитория. Сделал патч. Можно тестировать на реальных патчах
Встретил новую проблему: Если возникает исключение в момент тестирования, то временная ветка tmp не удаляется. При этом возникает исключение при попытке создать уже существующую ветку tmp. Пока вижу 2 возможных решения: 1)Принудительно удалять ветку tmp при создании 2)Корректно обрабатывать исключения при запуске тестов. Заодно можно будет посылать лог с бактрейсом автору письма.
Для воспроизведения проблемы можно добавить заведомо неработающий код в функцию helper.py: run_with_log(). При первом запуске возникает исключение, связанное с неработающим кодом При втором запуске появится ошибка повторного создания ветки tmp
Думаю сначала нужно решить багу 6467. При при возникновении падения ветка tmp сама должна удаляться.
Нашёл ещё одну ошибку: Ветка tmp не удаляется даже, если исключения не было. Текущей веткой выбирается master, но удаления почему-то не происходит.
(In reply to comment #8) > Нашёл ещё одну ошибку: > Ветка tmp не удаляется даже, если исключения не было. Текущей веткой > выбирается master, но удаления почему-то не происходит. > Исправлено
Реализовано. Теперь патчи прикладываются к временной ветке tmp. Если возникли проблемы с одним из репозиториев, то все временные ветки уничтожаются.