подмодули git - пытаются отладить неуловимую проблему - PullRequest
0 голосов
/ 06 июля 2011

Мы используем несколько подмодулей, чтобы наш код был модульным. Большинство разработчиков работают в 1 или 2 из них, что делает их приятными, поскольку им не нужно заполнять те участки кода, которые им не нужны. Мы работаем на филиалах. Подмодули и супер проект проверены в одной ветке. Теперь самое интересное. они вносят изменения в подмодуль, добавляют, фиксируют. Перейдите к суперпроекту и повторите коммит, чтобы записать новую версию подмодуля, который они изменили. Затем они запускают supergit pull, чтобы обновить весь контент в своей рабочей области. Это должно принести все последние версии для всех подмодулей. Затем они подталкивают к доставке. Наша система сборки создает клон и заполняет все подмодули. Затем он обнаруживает, что один из подмодулей, который не был заполнен разработчиком, имеет фиксацию, которая не была зафиксирована и помещена в суперпроект. Мы терпим неудачу в сборке сейчас, когда это происходит, но как мы можем избежать этого? Я попросил разработчиков заполнить все подмодули, прежде чем они нажмут, чтобы убедиться, что этого не произойдет, но мы на самом деле видели, как эта проблема возникала, когда в ветку не было внесено никаких изменений. В праздничные выходные, когда никто не вносил изменения, одна из веток начала давать сбой сборки. Возможно ли, что git теряет коммиты в суперпроекте?

1 Ответ

0 голосов
/ 06 июля 2011

Мы отказываемся от сборки сейчас, когда это происходит, но как мы можем избежать этого?

Что ж, если кто-то подталкивает к родительскому репо, не нажимая на репозиторий субмодуля, то этоправильное поведение для сбоя сборки.Как этого избежать?Убедитесь, что вы сначала выдвинули субмодуль, прежде чем начинать коммит и пуш родительского проекта.

Возможно ли, что git теряет коммиты?

Краткий ответ: нетБолее длинный ответ: это очень маловероятно.Git старается поддерживать согласованность хранилища.Если у вас есть коммиты A -> B -> C, то внезапно получить A -> C невозможно, если вы специально не скажете git сделать это .Конечно, git - это всего лишь программное обеспечение, и все программное обеспечение содержит ошибки, поэтому технически существует небольшая вероятность, что это может произойти, но я действительно сомневаюсь, что это ваш случай.

...