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

Отработанное время:
Продуктивное время:
Bug 6656 - Ошибка при создании ветки после неудачного завершения   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:
Blocks: 6264
  Show dependency treegraph
 
In work:
Reported: 2010-12-17 18:13 MSK by Александр Морозов
Modified: 2011-01-28 12:07 MSK (History)
2 users (show)

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


Attachments
Письмо с ошибкой "Cannot allocate memory" (629.08 KB, text/plain)
2010-12-17 18:15 MSK, Александр Морозов
Details
Письмо с ошибкой создания ветки (2.51 KB, text/plain)
2010-12-17 18:16 MSK, Александр Морозов
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Морозов 2010-12-17 18:13:06 MSK
После неудачного завершения скрипта из-за того, что на builder закончилась память, патчи не прикладываются:
GitCommandError: 'git branch tmp HEAD' returned exit status 128: fatal: A branch named 'tmp' already exists.
Comment 1 Vitaly Lipatov 2010-12-17 18:15:05 MSK
Видимо, стоит добавить код удаления ветки tmp, если она есть.
Comment 2 Александр Морозов 2010-12-17 18:15:27 MSK
Created attachment 2055 [details]
Письмо с ошибкой "Cannot allocate memory"
Comment 3 Александр Морозов 2010-12-17 18:16:28 MSK
Created attachment 2056 [details]
Письмо с ошибкой создания ветки
Comment 4 Виталий Перов 2010-12-20 16:34:52 MSK
Прошу прощения за задержку.
Ко вторнику постараюсь исправить.
Comment 5 Виталий Перов 2010-12-21 13:51:00 MSK
В качестве временного решения удалил ветку tmp из локального репозитория 1.0.12
Comment 6 Виталий Перов 2011-01-12 17:30:43 MSK
Появились дополнительные сложности.
Сначала делается git pull, а уже потом для каждого патча создаётся отдельная ветка tmp.

Если же после неудачного завершения ветка tmp остаётся, то pull делается именно в эту временную ветку.

Т.е проверять наличие ветки tmp надо перед git pull
Comment 7 Виталий Перов 2011-01-12 17:47:46 MSK
(В ответ на comment #6)
> Т.е проверять наличие ветки tmp надо перед git pull

Так тоже не получается. Для того, чтобы удалить ветку tmp, надо из неё переключиться на другую ветку. А на какую ветку конктретно переключаться - не известно, в разных репозиториях она называется по-разному.
А хранить название master-ветки для каждого репозитория в настройках скрипта как-то не хочется.
Comment 8 Vitaly Lipatov 2011-01-12 18:24:33 MSK
(В ответ на comment #7)
...
> переключиться на другую ветку. А на какую ветку конктретно переключаться - не
> известно, в разных репозиториях она называется по-разному.
Нет ничего сложного перед созданием ветки tmp запоминать, где же мы были.
Comment 9 Виталий Перов 2011-01-12 20:25:27 MSK
(В ответ на comment #8)
> Нет ничего сложного перед созданием ветки tmp запоминать, где же мы были.
Так оно и делается, при применении патча:
запоминается текущая ветка -> переключаемся на tmp -> переключаемся обратно и удаляем tmp

При нормальной работе скрипта так и происходит, и tmp удаляется.
Проблема возникает когда tmp не удалилась.
А вот при повторном запуске скрипта совсем не ясно какая ветка была до переключения в tmp
Comment 10 Александр Морозов 2011-01-12 20:38:36 MSK
> При нормальной работе скрипта так и происходит, и tmp удаляется.
> Проблема возникает когда tmp не удалилась.

Может, если она есть, не удалять её, а делать в ней git reset --hard origin/нужная_ветка
Comment 11 Виталий Перов 2011-01-12 22:27:18 MSK
(В ответ на comment #10)
> Может, если она есть, не удалять её, а делать в ней git reset --hard
> origin/нужная_ветка

В том то и проблема, что нужно узнать эту "нужная_ветка".
Видимо придётся хранить в настройках скрипта это значение для каждого репозитория. Другого пути нет.
Comment 12 Александр Морозов 2011-01-12 22:52:58 MSK
> > Может, если она есть, не удалять её, а делать в ней git reset --hard
> > origin/нужная_ветка
> В том то и проблема, что нужно узнать эту "нужная_ветка".
Скрипт же узнаёт каким-то образом, к какой ветке должны быть приложены патчи.
Comment 13 Виталий Перов 2011-01-12 22:59:37 MSK
> Скрипт же узнаёт каким-то образом, к какой ветке должны быть приложены патчи.
Он каждый раз прикладывает к текущей ветке.
А текущая ветка задаётся вручную после начального клонирования репозитория.
Т.е если скрипт не вернулся после выполнения в нужную ветку, то имя нужной ветки он уже не узнает, оно нигде не хранится.
Comment 14 Виталий Перов 2011-01-14 20:00:26 MSK
Исправил.
Теперь имя нужной ветки берётся из файла настроек.
Проверил локально - работает.
Comment 15 Виталий Перов 2011-01-14 20:00:49 MSK
Решена
Comment 16 Виталий Перов 2011-01-19 14:56:49 MSK
При тестировании на реальном репозитории выявились проблемы.

переключение веток с помощью модуля git-python выполняется с помощью команды
self.head.reference = self.heads.новая_ветка

В случае с eter-1.0.12 выполняется команда:
self.head.reference = self.heads.eter-1.0.12,
что и приводит к падению
Comment 17 Виталий Перов 2011-01-19 16:12:59 MSK
Исправил
Comment 18 Виталий Перов 2011-01-19 18:25:57 MSK
Исправил проблему при публикации репозитория (использовалась несуществующая переменная с названием ветки, что приводило к падению)
Comment 19 Виталий Перов 2011-01-28 12:07:23 MSK
Бага больше не появлялась. Думаю багу можно считать исправленной