После неудачного завершения скрипта из-за того, что на builder закончилась память, патчи не прикладываются: GitCommandError: 'git branch tmp HEAD' returned exit status 128: fatal: A branch named 'tmp' already exists.
Видимо, стоит добавить код удаления ветки tmp, если она есть.
Created attachment 2055 [details] Письмо с ошибкой "Cannot allocate memory"
Created attachment 2056 [details] Письмо с ошибкой создания ветки
Прошу прощения за задержку. Ко вторнику постараюсь исправить.
В качестве временного решения удалил ветку tmp из локального репозитория 1.0.12
Появились дополнительные сложности. Сначала делается git pull, а уже потом для каждого патча создаётся отдельная ветка tmp. Если же после неудачного завершения ветка tmp остаётся, то pull делается именно в эту временную ветку. Т.е проверять наличие ветки tmp надо перед git pull
(В ответ на comment #6) > Т.е проверять наличие ветки tmp надо перед git pull Так тоже не получается. Для того, чтобы удалить ветку tmp, надо из неё переключиться на другую ветку. А на какую ветку конктретно переключаться - не известно, в разных репозиториях она называется по-разному. А хранить название master-ветки для каждого репозитория в настройках скрипта как-то не хочется.
(В ответ на comment #7) ... > переключиться на другую ветку. А на какую ветку конктретно переключаться - не > известно, в разных репозиториях она называется по-разному. Нет ничего сложного перед созданием ветки tmp запоминать, где же мы были.
(В ответ на comment #8) > Нет ничего сложного перед созданием ветки tmp запоминать, где же мы были. Так оно и делается, при применении патча: запоминается текущая ветка -> переключаемся на tmp -> переключаемся обратно и удаляем tmp При нормальной работе скрипта так и происходит, и tmp удаляется. Проблема возникает когда tmp не удалилась. А вот при повторном запуске скрипта совсем не ясно какая ветка была до переключения в tmp
> При нормальной работе скрипта так и происходит, и tmp удаляется. > Проблема возникает когда tmp не удалилась. Может, если она есть, не удалять её, а делать в ней git reset --hard origin/нужная_ветка
(В ответ на comment #10) > Может, если она есть, не удалять её, а делать в ней git reset --hard > origin/нужная_ветка В том то и проблема, что нужно узнать эту "нужная_ветка". Видимо придётся хранить в настройках скрипта это значение для каждого репозитория. Другого пути нет.
> > Может, если она есть, не удалять её, а делать в ней git reset --hard > > origin/нужная_ветка > В том то и проблема, что нужно узнать эту "нужная_ветка". Скрипт же узнаёт каким-то образом, к какой ветке должны быть приложены патчи.
> Скрипт же узнаёт каким-то образом, к какой ветке должны быть приложены патчи. Он каждый раз прикладывает к текущей ветке. А текущая ветка задаётся вручную после начального клонирования репозитория. Т.е если скрипт не вернулся после выполнения в нужную ветку, то имя нужной ветки он уже не узнает, оно нигде не хранится.
Исправил. Теперь имя нужной ветки берётся из файла настроек. Проверил локально - работает.
Решена
При тестировании на реальном репозитории выявились проблемы. переключение веток с помощью модуля git-python выполняется с помощью команды self.head.reference = self.heads.новая_ветка В случае с eter-1.0.12 выполняется команда: self.head.reference = self.heads.eter-1.0.12, что и приводит к падению
Исправил
Исправил проблему при публикации репозитория (использовалась несуществующая переменная с названием ветки, что приводило к падению)
Бага больше не появлялась. Думаю багу можно считать исправленной