Почему git обновление подмодуля не выполняется автоматически при выполнении git?

При переключении ветвей с проверкой git я бы предположил, что большую часть времени вы хотели бы обновить свои подмодули.

  • В какой ситуации вы не хотите обновить подмодули после переключения?
  • Что бы сломалось, если это было сделано автоматически с помощью git checkout?

Обновлен с помощью примера:

  • В ветки А имеется подмодуль S при 3852f1
  • Филиал B имеет подмодуль S в fd72d7

На ветке A, git проверка B приведет к созданию рабочей копии ветки B с субмодулем S в 3852f1 (с измененным S). git обновление подмодуля будет проверяться S на fd72d7.

Ответ 1

Я считаю, что подмодули, не обновляющиеся автоматически, соответствуют целям развития Git. Git предназначен для работы в распределенном режиме и не предполагает, что вы даже можете подключиться к нелокальному репозиторию, если вы явно не указали его. Git не автообновление подмодуля было бы ожидаемым поведением при мысли об этом.

С учетом сказанного, если вы знаете, что вы всегда хотите, чтобы эти подмодули были втянуты, и вы знаете, что вы никогда не откажетесь от этих подмодулей в другой локальный репозиторий, тогда он не должен ничего сломать, если вы автоматически обновили их после оформления заказа.

Ответ 2

git checkout --recurse-submodules был добавлен в git 2.13

Это упоминается в примечаниях к выпуску по адресу: https://github.com/git/git/commit/e1104a5ee539408b81566066aaa6963cb87d5cd6#diff-c24776ff22455a30fbb78e378b7df0b0R139

опция submodule.recurse была добавлена в git 2.14

Установить как:

git config --global submodule.recurse true

man git-config говорит:

Указывает, будут ли команды повторяться в подмодулях по умолчанию. Это относится ко всем командам, которые имеют опцию --recurse-submodules. По умолчанию false.

Мне кажется, что не обновлять модули по умолчанию - это плохое поведение Git по умолчанию, которое идет вразрез с ожиданиями большинства пользователей и ограничивает принятие субмодулей, я действительно хочу, чтобы разработчики изменили его.