I faced an unexpected behaviour during cherry-picking
a commit to a branch with a submodule.
Git graph:
A -- B [master]
\
`- C -- D [test]
Both branches have a file with name `a_file`.
It has been added by commit A.
Commits B and C add a folder with name `a_submodule` to the respective
branches.
Commit C does it regularly by adding a file with name `a_submodule/content`.
Commit B adds a submodule with name `a_submodule`.
Commit D only modifies `a_file`.
Note that `a_file` and `a_submodule` are not related.
[repo]
|- a_file
`- a_submodule
When I trying to cherry pick commit D on commit B, I got
a conflict with `a_submodule`. Changes of `a_file` are
successfully cherry-picked.
I expected, that there would be no conflicts.
A bash script reproducing the bug is listed below.
Vasily.
====
rm -rf a_submodule a_repo
mkdir a_submodule
cd a_submodule
git init
touch a_file_in_a_submodule
git add a_file_in_a_submodule
git commit -m "add a file in a submodule"
cd ..
mkdir a_repo
cd a_repo
git init
touch a_file
git add a_file
git commit -m "add a file"
git branch test
git checkout test
mkdir a_submodule
touch a_submodule/content
git add a_submodule/content
git commit -m "add a regular folder with name a_submodule"
echo "123" > a_file
git add a_file
git commit -m "modify a file"
git checkout master
git submodule add ../a_submodule a_submodule
git submodule update a_submodule
git commit -m "add a submodule info folder with name a_submodule"
# Trying to cherry-pick modification of a file from test branch.
git cherry-pick test
# some debug
git status
====