git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Bug with branches/merges in submodules
@ 2021-07-07 13:13 Mel Dafert
  2021-07-09 21:18 ` Philippe Blain
  0 siblings, 1 reply; 4+ messages in thread
From: Mel Dafert @ 2021-07-07 13:13 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 421 bytes --]

Hello,
I ran into a bug where commits are omitted from `git submodule summary`
and friends when the submodule contains merge commits.
Originally using 2.30.2, I can also reproduce this with a fresh build on the
`next` branch (see attached bugreport).
I would assume that this is not intentional, however I cannot find any relevant
information on this.
Feel free to contact me for extra details.
Best regards,
Mel

[-- Attachment #2: git-bugreport-2021-07-07-1419.txt --]
[-- Type: text/plain, Size: 2209 bytes --]

Thank you for filling out a Git bug report!
Please answer the following questions to help us understand your issue.

What did you do before the bug happened? (Steps to reproduce your issue)
Set up a submodule that has branches/merge commits:
```bash
# create repository "child"
mkdir child-repo
cd child-repo
git init
touch initial.txt
git add initial.txt
git commit -m "initial child"
cd ..
# create repository "parent"
mkdir parent
cd parent
git init
# add submodule "child" to repository "parent"
git submodule add ../child-repo/ child
git commit -am "initial parent"
cd child
# make two commits in separate branches in "child"
git switch -c "secondary"
touch s1.txt
git add s1.txt
git commit -m "s1"
git switch master
touch m1.txt
git add m1.txt
git commit -m "m1"
# merge branch "secondary" into "master" in "child" - this creates a merge commit
git merge secondary --no-edit
cd ..
```
Run `git diff --submodule=log` inside the "parent" repository.

What did you expect to happen? (Expected behavior)
`git diff --submodule=log` should show all three commits added to the "child"
submodule:
```
Submodule child XXXXXXX..YYYYYYY
> Merge branch 'secondary'
> m1
> s1
```

What happened instead? (Actual behavior)
`git diff --submodule=log` only shows commits from one ancestor of the merge
commit:
```
Submodule child XXXXXXX..YYYYYYY
> Merge branch 'secondary'
> m1
```

What's different between what you expected and what actually happened?
All the commits added to the "secondary" branch are missing in
`git diff --submodule=log`.

Anything else you want to add:
The commit range shown by `git diff --submodule=log` is correct:
`cd child; git log XXXXXXX..YYYYYYY` shows the correct list of commits.

This bug also affects `git submodule summary`, and `git show --submodule=log`
after the changes have been committed.


[System Info]
git version:
git version 2.32.0.262.g8c582fcd64
cpu: x86_64
built from commit: 8c582fcd643d12802e0a6d7e307890aa5b6b26e1
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
uname: Linux 5.11.0-22-generic #23-Ubuntu SMP Thu Jun 17 00:34:23 UTC 2021 x86_64
compiler info: gnuc: 10.3
libc info: glibc: 2.33
$SHELL (typically, interactive shell): /bin/bash


[Enabled Hooks]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-07-14 12:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-07 13:13 Bug with branches/merges in submodules Mel Dafert
2021-07-09 21:18 ` Philippe Blain
2021-07-14 11:07   ` Mel Dafert
2021-07-14 12:25     ` Philippe Blain

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).