On Fri, Sep 2, 2016 at 12:22 PM, Dakota Hawkins <dakotahawkins@xxxxxxxxx> wrote: > Below is a simple reproduction of the issue. > > The _real_ problem is that this is how our pull request merges work, So your workflow is the problem or is the actual bug just exposed in your workflow? > 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 > And no reset/rm in between, i.e. we still have submodule-location-2 from merge-ff-test still around? > ## 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: