OSDN Git Service

recursive submodules: detach HEAD from new state
authorStefan Beller <sbeller@google.com>
Mon, 24 Jul 2017 17:36:01 +0000 (10:36 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 25 Jul 2017 18:05:41 +0000 (11:05 -0700)
commit3ef253803211f5ec38c88635bfd50f91ccd98e16
tree34d3aecdbf83da253edb939141836edc1c316622
parent5800c63717ae35286a1441f14ffff753e01f7e2b
recursive submodules: detach HEAD from new state

When a submodule is on a branch and in its superproject you run a
recursive checkout, the branch of the submodule is updated to what the
superproject checks out. This is very unexpected in the current model of
Git as e.g. 'submodule update' always detaches the submodule HEAD.

Despite having plans to have submodule HEADS not detached in the future,
the current behavior is really bad as it doesn't match user expectations
and it is not checking for loss of commits (only to be recovered via the
reflog).

Detach the HEAD unconditionally in the submodule when updating it.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule.c
t/lib-submodule-update.sh