Re: If a branch moves a submodule, "merge --ff[-only]" succeeds while "merge --no-ff" fails with conflicts
- From
Stefan Beller <sbeller@google.com>
- Date
- Sep 6, 2016, 19:00 UTC
- Message-ID
- <CAGZ79kb=LyusFH6tGirGP9qK1k-cov2UubEbKPfeyPRThUsa-Q@mail.gmail.com>
- In-Reply-To
- <CAG0BQX=wvpkJ=PQWV-NbmhuPV8yzvd_KYKzJmsfWq9xStZ2bnQ@mail.gmail.com>
On Fri, Sep 2, 2016 at 12:22 PM, Dakota Hawkins <dakotahawkins@gmail.com> 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?
Show 26 quoted lines
> 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?
Show 26 quoted lines
> ## 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: