2013-05-01 5 views
2

Я ищу воспроизводимость между системой Android (AOSP) ежедневно строит против коллекций репо git-репозиториев и влияние использования быстрых слияний.Воспроизводимые андроиды строятся с git с быстрым слиянием вперёд

Проблема в том, что при ежедневных сборках вы получите подсказку, пока развитие происходит в другом месте. Если HEAD не изменился, когда изменение будет нажато, он выполнит ускоренное слияние, и время будет переписано. Таким образом, физическое состояние репозитория 3 дня назад будет отличаться от того, чтобы попросить git вернуться три дня.

Самое главное решение, которое я вижу, - использовать git с --no-ff, чтобы заставить комманды слияния. Это приводит к большому количеству шума для небольших коммитов и, по-видимому, считается плохой практикой в ​​сохранении чистого дерева.

Фон на этом пытается воспроизвести в среде сборки android. Для тех, кто не знает, сборка android - это сборник разрозненных репозиториев git. Мой конечный вариант использования заключается в том, что я хочу сказать, поставить базу кода в состояние, которое было для разработчиков 3 дня назад. С быстрым слиянием мы теряем критическую информацию о том, как соотносить изменения в нескольких проектах репо (т. Е. Репозитории git).

ответ

2

Как вы заметили, Git не отслеживает состояние ветви с течением времени. Два разумных варианта либо установить метки для каждой сборки или создать статический манифест с SHA-1s всех изъятые совершает во время сборки:

repo manifest -r -o build_20131104.xml 

Эти файлы могут быть либо в проверенном манифеста git и используется, например,

repo init -u ... -m build_20131104.xml 

для воспроизведения предыдущего состояния или вы можете сохранить файлы в другом месте.

Пометка всех gits помещает пространство имен тегов, если вы делаете много сборок (и Git в настоящее время довольно медленный с тысячами тегов), но в остальном довольно удобно. Не забудьте также отметить манифест git.