Re: If a branch moves a submodule, "merge --ff[-only]" succeeds while "merge --no-ff" fails with conflicts
Is there any additional information I could provide that would be helpful?
Dakota
On Fri, Sep 2, 2016 at 3:22 PM, Dakota Hawkins <dakotahawkins@gmail.com> wrote:
Show 55 quoted lines
> Below is a simple reproduction of the issue.
>
> The _real_ problem is that this is how our pull request merges work,
> they're not allowed to do fast-forward merges. To work around this we
> are having to split this up into two pull requests/merges: One that
> copies the submodules to the new location and includes any fixes
> required to support the move, and a second that removes the old
> locations.
>
> ## Setup steps
> git clone https://github.com/dakotahawkins/submodule-move-merge-bug-main-repo.git
> cd submodule-move-merge-bug-main-repo
> ## How it was initially constructed
> # git submodule add ../submodule-move-merge-bug-submodule-repo.git
> ./submodule-location-1
> # git commit -m "Added submodule in its initial location"
> # git push
> # git checkout -b move-submodule
> # git mv ./submodule-location-1 ./submodule-location-2
> # git commit -m "Moved submodule"
> # git push --set-upstream origin move-submodule
> git branch move-submodule origin/move-submodule
>
> ## Test fast-forward merge, this will work
> git checkout -b merge-ff-test master # warning: unable to rmdir
> submodule-location-2: Directory not empty
> rm -rf ./submodule-location-2
> git merge --ff-only move-submodule
>
> ## Test no-fast-forward merge, this will fail with conflicts:
> git checkout -b merge-no-ff-test master
> git merge --no-ff move-submodule
> # Auto-merging submodule-location-2
> # Adding as submodule-location-2~move-submodule instead
> # Automatic merge failed; fix conflicts and then commit the result.
> git status
> # On branch merge-no-ff-test
> # You have unmerged paths.
> # (fix conflicts and run "git commit")
> # (use "git merge --abort" to abort the merge)
> #
> # Changes to be committed:
> #
> # modified: .gitmodules
> # deleted: submodule-location-1
> #
> # Unmerged paths:
> # (use "git add <file>..." to mark resolution)
> #
> # added by us: submodule-location-2
> #
> # fatal: Not a git repository: 'submodule-location-1/.git'
> # Submodule changes to be committed:
> #
> # * submodule-location-1 07fec24...0000000: