1)Хотелось бы, чтобы текущий класс get_mail возвращал полученные патчи по-одному. В этом случае удаление патчей можно выполнять после их обработки. В случае падения, патчи остаются в почтовом ящике. 2)Для использования уже существующего класса для задач не связанных с патчами (например бага 6185) нужно разделить существующий класс get_mail на два класса: mail_messages и mail_tasks. mail_messages: общий класс, получающий по-очереди сообщения из почтового ящика, и умеющий их удалять. mail_tasks - класс, который умеет вытаскивать из сообщений объекты wine_patch и merge_task. 3)Чтобы привести классы wine_patch и merge_task к единому виду, хотелось бы их наследовать от одного класса git_mail_task. Пока планируется только один общий метод - run(). Временно, можно попробовать обойтись и без обобщённого класса, добавив в wine_patch метод run(). 4) wine_patch и merge_task имеют некоторые отличия. wine_patch может быть связан с несколькими репозиториями, а merge_task только с одним. Для приведения их к общему виду нужно убрать привязку к нескольким репозиториям, и обеспечить дублирование патчей для каждого репозитория. Сразу возникает проблема с уникальностью имён файлов (их тоже придётся дублировать).
> Временно, можно попробовать обойтись и без обобщённого класса, добавив в > wine_patch метод run(). Добавил метод run().
(В ответ на comment #0) > нужно разделить существующий класс get_mail на два класса: > mail_messages и mail_tasks. > mail_messages: общий класс, получающий по-очереди сообщения из почтового ящика, > и умеющий их удалять. > mail_tasks - класс, который умеет вытаскивать из сообщений объекты wine_patch и > merge_task. Начала реализацию. Пока что встретились проблемы: 1) Одно сообщение может содержать несколько патчей. Т.е при очередном разборе сообщения нужно возвращать первый патч, а остальные хранить где-то во внутреннем буфере, и возвращать при следующем вызове get_next_patch(). 2) Возникла проблема с удалением сообщения, когда оно содержит несколько патчей. Если не все патчи из сообщения обработаны, то сообщение удалять нельзя.
(В ответ на comment #2) > Начала реализацию. > Пока что встретились проблемы: > 1) Одно сообщение может содержать несколько патчей. Т.е при очередном разборе > сообщения нужно возвращать первый патч, а остальные хранить где-то во > внутреннем буфере, и возвращать при следующем вызове get_next_patch(). > 2) Возникла проблема с удалением сообщения, когда оно содержит несколько > патчей. > Если не все патчи из сообщения обработаны, то сообщение удалять нельзя. Закончил реализацию. Исправил потенциальные проблемы. Требуется протестировать решение и исправить встреченные проблемы.
(В ответ на comment #3) > Требуется протестировать решение и исправить встреченные проблемы. Протестировал. Исправил проблемы. Работает.
Откладываем задачи, к которым не обращались более 100 дней.