Inspiration

When reviewing pull requests on Bitbucket, quickly understanding which files have conflicts and where those conflicts occur can be time-consuming. Forge Conflict Viewer helps developers instantly visualize conflicted files and their content directly within the PR interface.

What it does

  • Lists all conflicted files in a Bitbucket pull request
  • Displays the number of conflicts per file
  • Allows selecting individual files to view conflict content with <<<<<<<, =======, >>>>>>> markers in a read-only editor
  • Automatically resizes panels based on content for better readability

How we built it

  • Backend: Built with Atlassian Forge (Node.js) using @forge/api and @forge/resolver to interact with Bitbucket REST API:
    • Fetches pull request information
    • Retrieves diffstat and file diffs
    • Downloads file content from source/destination commits to reconstruct conflict regions
  • Frontend: Forge Custom UI (vanilla HTML/CSS/JavaScript) communicating with backend via Forge Bridge

Challenges we ran into

Originally, the goal was to let developers resolve simple conflicts directly inside the Bitbucket pull request UI — merge the destination branch into the source, show real Git conflict markers, edit them, and commit the resolved result. In practice, we hit a hard limitation: the Bitbucket Cloud API does not allow creating a merge commit when conflicts exist, and any attempt to “simulate” this flow from the app side would only create extra commits instead of a true merge-based resolution. Because of this, we intentionally scoped the project down to a read‑only conflict viewer that focuses on giving developers a fast, accurate picture of what is conflicting so they can resolve it properly elsewhere (locally or using Bitbucket’s own tools).

  • Bitbucket API doesn't allow merging when conflicts exist, so we designed the app as a pure "conflict viewer" rather than attempting automatic resolution,

Built With

  • atlassian-forge-platform
  • bitbucket-cloud-rest-api
  • css3
  • forge/api
  • forge/resolver
  • html5
  • javascript-(es6+)
  • node.js
Share this project:

Updates