* Bug: cherry-pick & submodule
@ 2017-11-10 16:00 Ефимов Василий
0 siblings, 0 replies; 3+ messages in thread
From: Ефимов Василий @ 2017-11-10 16:00 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 805 bytes --]
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 attached.
Vasily.
[-- Attachment #2: bug.sh --]
[-- Type: application/x-shellscript, Size: 800 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Bug: cherry-pick & submodule
@ 2017-11-10 16:41 Ефимов Василий
2017-11-11 0:04 ` [PATCH] t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure Stefan Beller
0 siblings, 1 reply; 3+ messages in thread
From: Ефимов Василий @ 2017-11-10 16:41 UTC (permalink / raw)
To: git
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
====
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure
2017-11-10 16:41 Bug: cherry-pick & submodule Ефимов Василий
@ 2017-11-11 0:04 ` Stefan Beller
0 siblings, 0 replies; 3+ messages in thread
From: Stefan Beller @ 2017-11-11 0:04 UTC (permalink / raw)
To: real; +Cc: git, Stefan Beller
Signed-off-by: Stefan Beller <sbeller@google.com>
---
I rewrote your script to integrate with our test suite, potentially acting as
a regression test once we solve the Directory/File conflict issue.
Thanks,
Stefan
t/t3512-cherry-pick-submodule.sh | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/t/t3512-cherry-pick-submodule.sh b/t/t3512-cherry-pick-submodule.sh
index 6863b7bb6f..17a6773247 100755
--- a/t/t3512-cherry-pick-submodule.sh
+++ b/t/t3512-cherry-pick-submodule.sh
@@ -10,4 +10,40 @@ KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
test_submodule_switch "git cherry-pick"
+test_expect_failure 'unrelated submodule/file conflict is ignored' '
+ test_create_repo sub &&
+
+ touch sub/file &&
+ git -C sub add file &&
+ git -C sub commit -m "add a file in a submodule" &&
+
+ test_create_repo a_repo &&
+ (
+ cd a_repo &&
+ touch a_file &&
+ git add a_file &&
+ git commit -m "add a file" &&
+
+ git branch test &&
+ git checkout test &&
+
+ mkdir sub &&
+ touch sub/content &&
+ git add sub/content &&
+ git commit -m "add a regular folder with name sub" &&
+
+ echo "123" >a_file &&
+ git add a_file &&
+ git commit -m "modify a file" &&
+
+ git checkout master &&
+
+ git submodule add ../sub sub &&
+ git submodule update sub &&
+ git commit -m "add a submodule info folder with name sub" &&
+
+ git cherry-pick test
+ )
+'
+
test_done
--
2.15.0.128.gcadd42da22
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-11-11 0:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-10 16:41 Bug: cherry-pick & submodule Ефимов Василий
2017-11-11 0:04 ` [PATCH] t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure Stefan Beller
-- strict thread matches above, loose matches on Subject: below --
2017-11-10 16:00 Bug: cherry-pick & submodule Ефимов Василий
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).