Uploaded image for project: 'Bitbucket Server'
  1. Bitbucket Server
  2. BSERV-11727

Handle "implicit directory rename" conflicts (Git 2.18+)



    • Feedback Policy:
      We collect Bitbucket feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.


      Git 2.18 includes support for detecting "implicit directory renames"; cases where all the files in directory A have moved to directory B and then a new commit introduces a new file in directory A (See the first bullet point in the release notes).

      Implicit directory rename support is enabled by default when using git merge, git cherry-pick and some invocations of git rebase, and, at least in all currently-available Git versions that have it, cannot be disabled.

      When implicit directory rename detection fails, it results in new conflict types Bitbucket Server doesn't know how to handle, resulting in a common ancestor diff being displayed (which doesn't show any conflicts) and a blue banner on the pull request overview with a message like "Bitbucket Server could not create the merge diff for this pull request." Performing a merge (or rebase) locally to resolve conflicts and then pushing to the target branch will allow the system to resume displaying the normal merge-based diff.

      As implicit directory rename detection cannot be disabled, the only workaround for preventing these new conflict types is to downgrade to Git 2.17 or earlier where the detection doesn't exist.




            bturner Bryan Turner
            bturner Bryan Turner
            0 Vote for this issue
            1 Start watching this issue



                Backbone Issue Sync

                • Backbone Issue Sync is enabled for your project, but there is no synchronization info for this issue.