git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Bug: cherry-pick & submodule

From
ЕВЕфимов Василий <real@ispras.ru>
Date
Nov 10, 2017, 16:41 UTC
Message-ID
<743acc29-85bb-3773-b6a0-68d4a0b8fd63@ispras.ru>

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 ====

Next: Stefan Beller
Message 1 of 2 in “Bug: cherry-pick & submodule”
  1. Ефимов ВасилийNov 10, 2017
  2. t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failureStefan Beller, Nov 11, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.