git submódulo foreach git pull origem master vs. git pull --submódulos -recursivos

3

Eu gerencio um repositório com vários submódulos. Por um tempo agora eu tenho usado

$ git submodule foreach git pull origin master

para inserir as alterações mais recentes para todos esses caras. No entanto, recentemente aprendi sobre

$ git pull --recurse-submodules

e tentou, mas parece que as alterações só são obtidas, então você precisa

$ git submodule update --recursive

para realmente fazer o checkout das alterações. No entanto, este último parece não fazer nada no meu repositório, apesar de submódulos claramente puxando mudanças. Eu também notei que meus submódulos são verificados para algum commit ao invés de master ou qualquer branch.

  1. Estou fazendo algo de forma inadequada?
  2. Ou isso é um artefato do modo foreach que costumava fazer as coisas?
  3. Como posso consertar as coisas para que pull --recurse-submodules e submodule update --recursive funcionem como esperado?
por Ncat 13.12.2014 / 03:29

1 resposta

1

git submodule update --recursive está atualizando os submódulos para corresponder ao commit no repositório pai. Então você precisa enviar uma alteração para o repositório pai para que o comando faça qualquer coisa.

Com esta configuração:

/proj/.git
/proj/module/.git

Você faz alterações no "módulo", confirma e envia por push. Em "proj", você comete o módulo (ele apenas mostra a mudança de hash do submódulo).

Agora, quando você puxar e atualizar o submódulo, ele atualizará "módulo" para usar o novo commit.

    
por 06.10.2016 / 19:13