git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Juan Palacios <jpalacios@atlassian.com>
To: git@vger.kernel.org
Subject: jpalacios@atlassian.com
Date: Fri, 24 Oct 2014 13:50:02 +1100	[thread overview]
Message-ID: <CABY2JrJjZH+hgeGCBwFjBxsTdo_M2yXctr1dJKLxFL28hacQPw@mail.gmail.com> (raw)

In a project with a submodule, if you merge two diverging branches in
which one branch updated which commit the submodule points to, and the
other branch moves the submodule to a new location, the resulting
merge error message does not provide information about what the
conflict was, or the path to the conflicted directory.

I've included at the bottom a short script which sets up a project
with a submodule and creates both branches. If after running it you cd
into 'top-level-project' and run 'git merge
branch_that_points_the_submodule_to_new_commit' the resulting error
message is:

Auto-merging submodule-moved
Adding as submodule-moved~HEAD instead
Automatic merge failed; fix conflicts and then commit the result.

I would have expected an output in line with other merge conflict
messages. Something with the format:

CONFLICT (<REASON>): Merge conflict in <PATH_TO_CONFLICT>

Where <REASON> would be something like (delete/modify) I believe this
might be a bug in the implementation.

Thank you

--------------------------

# Create a submodule
mkdir submodule
pushd submodule
echo "This is a submodule" > README.txt
git init
git add README.txt
git commit -m "Initial commit"
popd

# Create a top level project
mkdir top-level-project
pushd top-level-project
echo "This is a parent project" > README.txt
git init
git add README.txt
git commit -m "Initial commit"

# Add submodule to top level project
git submodule add ../submodule/
git commit -m "Added a submodule"

# Create two diverging branches
git checkout -b branch_that_points_the_submodule_to_new_commit
git checkout -b branch_that_moves_the_submodule_to_new_path

# Update the commit the submodule points to in one branch
git checkout branch_that_points_the_submodule_to_new_commit
pushd submodule
echo "This modifies the README file" > README.txt
git add .
git commit -m "Added line to README file"
popd
git add submodule
git commit -m "Updated submodule to point to new commit"

# Move the submodule directory in the other branch
git checkout branch_that_moves_the_submodule_to_new_path
git submodule update
git mv submodule submodule-moved
git commit -m "Moved submodule to new path"

                 reply	other threads:[~2014-10-24  2:50 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CABY2JrJjZH+hgeGCBwFjBxsTdo_M2yXctr1dJKLxFL28hacQPw@mail.gmail.com \
    --to=jpalacios@atlassian.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).