Merge Viewer - bcssov/IronyModManager GitHub Wiki

The Merge Viewer is the central tool used to inspect, compare, and resolve conflicts detected by the Conflict Solver β†’ Conflict Solver Modes.
It allows you to analyze differences between mods, understand which definition β€œwins,” and build a merged version using a virtual definition.


1. Overview

The Merge Viewer opens when you select a conflicted definition inside Conflicted Objects β†’ Conflicted Objects.
It presents:

  • All definitions contributing to the conflict
  • A virtual, editable definition
  • Comparison tools for navigating and understanding differences

The Merge Viewer may operate in editable or read-only mode depending on the capabilities of the underlying conflict data for that specific definition.


2. Definitions Pane

The left side lists all definitions contributing to the conflict.

Example screenshot:

definitions

Each definition is color-coded:

🟒 Green β€” Virtual Definition

This is the editable definition.
All merge actions apply to this virtual definition.

The virtual definition is created by copying the content of the orange definition, unless conflict history is available.

🟠 Orange β€” Chosen Game-Winning Definition

This is the definition that Irony believes the game will actually use if you do not resolve the conflict.

It may display labels such as:

  • FIOS
  • LIOS
  • Load Order
  • Override

These labels indicate why this definition is expected to win in-game under the current load order and dependency rules.

Irony uses this definition as the starting point for the virtual definition, unless conflict history is available.


3. Merge Viewer Actions (Non-Virtual Definitions)

Non-virtual definitions are read-only.
You cannot edit their contents directly.

Available actions:

β€’ Next / Prev conflict

Moves to the next or previous difference.

β€’ Copy text

Copies the entire definition to the clipboard.

β€’ Copy all

Copies all code blocks from the selected definition into the virtual definition.

β€’ Copy this

Copies only the selected code block into the virtual definition.

β€’ Copy this before line

Inserts the selected block above the highlighted block in the virtual definition.

β€’ Copy this after line

Inserts the selected block below the highlighted block in the virtual definition.


4. Merge Viewer Actions (Virtual Definition)

The virtual definition (green) is where all merging takes place.

Available actions:

β€’ External Merge

If an external merge tool is configured in Options β†’ Options,
Irony can launch it with the current conflict.
Irony waits for you to finish editing and save changes in the external tool before importing them back.

β€’ Toggle Diff Compare Mode

Switches between the new diff interface and the legacy viewer.

β€’ Next / Prev conflict

Navigates between conflict points inside the virtual definition.

β€’ Copy text

Copies the virtual definition to the clipboard.

β€’ Edit

Allows direct editing of the virtual definition.

β€’ Move up / down

Moves the selected code block within the virtual definition.


5. Resolve & Ignore

Resolve

Writes the virtual definition to the patch mod.
The conflict disappears from the Conflicted Objects view β†’ Conflicted Objects

A conflict reappears if:

  1. The mod collection changes
  2. A mod affecting the definition is updated
  3. You manually Reset Conflicts β†’ Reset Conflicts

Ignore

Marks the conflict as ignored.
It remains hidden until the underlying content changes again.


6. Back

Returns to the main Irony interface without resolving or ignoring the conflict.
Edits to the virtual definition are preserved until the solver is closed or the collection changes.


7. Read-Only Scenarios

Merge Viewer operates in read-only mode when:

  • The definition type cannot be auto-merged
  • The conflict is being analyzed only
  • The data structure does not support merge operations

You may still:

  • Navigate conflicts
  • Copy text
  • Inspect differences

…but you cannot modify or merge them.


Summary

The Merge Viewer provides:

  • A detailed comparison of all definitions involved in a conflict
  • A virtual definition for building a resolved version
  • Tools for selective merging and navigation
  • Optional integration with external merge tools
  • Resolve/Ignore workflows
  • Support for both editable and read-only scenarios

It is the primary interface for analyzing and resolving conflicts in Irony.