Class DiffTools


  • public class DiffTools
    extends Object
    Manages diff tools.
    • Constructor Detail

      • DiffTools

        public DiffTools​(Repository repo)
        Creates the external diff-tools manager for given repository.
        Parameters:
        repo - the repository
      • DiffTools

        public DiffTools​(StoredConfig config)
        Creates the external merge-tools manager for given configuration.
        Parameters:
        config - the git configuration
    • Method Detail

      • compare

        public Optional<FS.ExecutionResult> compare​(FileElement localFile,
                                                    FileElement remoteFile,
                                                    Optional<String> toolName,
                                                    BooleanTriState prompt,
                                                    boolean gui,
                                                    BooleanTriState trustExitCode,
                                                    PromptContinueHandler promptHandler,
                                                    InformNoToolHandler noToolHandler)
                                             throws ToolException
        Compare two versions of a file.
        Parameters:
        localFile - The local/left version of the file.
        remoteFile - The remote/right version of the file.
        toolName - Optionally the name of the tool to use. If not given the default tool will be used.
        prompt - Optionally a flag whether to prompt the user before compare. If not given the default will be used.
        gui - A flag whether to prefer a gui tool.
        trustExitCode - Optionally a flag whether to trust the exit code of the tool. If not given the default will be used.
        promptHandler - The handler to use when needing to prompt the user if he wants to continue.
        noToolHandler - The handler to use when needing to inform the user, that no tool is configured.
        Returns:
        the optional result of executing the tool if it was executed
        Throws:
        ToolException - when the tool fails
      • compare

        public FS.ExecutionResult compare​(FileElement localFile,
                                          FileElement remoteFile,
                                          ExternalDiffTool tool,
                                          boolean trustExitCode)
                                   throws ToolException
        Compare two versions of a file.
        Parameters:
        localFile - the local file element
        remoteFile - the remote file element
        tool - the selected tool
        trustExitCode - the "trust exit code" option
        Returns:
        the execution result from tool
        Throws:
        ToolException
      • getUserDefinedToolNames

        public Set<String> getUserDefinedToolNames()
        Get user defined tool names.
        Returns:
        the user defined tool names
      • getPredefinedToolNames

        public Set<String> getPredefinedToolNames()
        Get predefined tool names.
        Returns:
        the predefined tool names
      • getAllToolNames

        public Set<String> getAllToolNames()
        Get all tool names.
        Returns:
        the all tool names (default or available tool name is the first in the set)
      • getExternalToolFromAttributes

        public Optional<String> getExternalToolFromAttributes​(String path)
                                                       throws ToolException
        Provides Optional with the name of an external diff tool if specified in git configuration for a path. The formed git configuration results from global rules as well as merged rules from info and worktree attributes. Triggers TreeWalk until specified path found in the tree.
        Parameters:
        path - path to the node in repository to parse git attributes for
        Returns:
        name of the difftool if set
        Throws:
        ToolException
      • getPredefinedAvailableTools

        public Set<String> getPredefinedAvailableTools()
        Checks the availability of the predefined tools in the system.
        Returns:
        set of predefined available tools
      • getUserDefinedTools

        public Map<String,​ExternalDiffTool> getUserDefinedTools()
        Get user defined tools map.
        Returns:
        the user defined tools
      • getPredefinedTools

        public Map<String,​ExternalDiffTool> getPredefinedTools​(boolean checkAvailability)
        Get predefined tools map.
        Parameters:
        checkAvailability - true: for checking if tools can be executed; ATTENTION: this check took some time, do not execute often (store the map for other actions); false: availability is NOT checked: isAvailable() returns default false is this case!
        Returns:
        the predefined tools with optionally checked availability (long running operation)
      • getFirstAvailableTool

        public String getFirstAvailableTool()
        Get first available tool name.
        Returns:
        the name of first available predefined tool or null
      • getDefaultToolName

        public String getDefaultToolName​(boolean gui)
        Get default (gui-)tool name.
        Parameters:
        gui - use the diff.guitool setting ?
        Returns:
        the default tool name
      • isInteractive

        public boolean isInteractive()
        Is interactive diff (prompt enabled) ?
        Returns:
        is interactive (config prompt enabled) ?