## ide-git-buffer-change-monitor ide-git-buffer-change-monitor |

## Functions

#define | IDE_TYPE_GIT_BUFFER_CHANGE_MONITOR

## Properties

GgitRepository * | repository | Write / Construct Only

## Types and Values

| IdeGitBufferChangeMonitor

## Object Hierarchy

        GObject
        ╰── IdeObject
            ╰── IdeBufferChangeMonitor
                ╰── IdeGitBufferChangeMonitor

## Description

This module provides line change monitoring when used in conjunction with an IdeGitVcs. The changes are generated by comparing the buffer contents to the version found inside of the git repository.

To enable us to avoid blocking the main loop, the actual diff is performed in a background thread. To avoid threading issues with the rest of LibIDE, this module creates a copy of the loaded repository. A single thread will be dispatched for the context and all reload tasks will be performed from that thread.

Upon completion of the diff, the results will be passed back to the primary thread and the state updated for use by line change renderer in the source view.

TODO: Move the thread work into ide_thread_pool?

## Functions

### IDE_TYPE_GIT_BUFFER_CHANGE_MONITOR

    #define IDE_TYPE_GIT_BUFFER_CHANGE_MONITOR (ide_git_buffer_change_monitor_get_type())

## Types and Values

### IdeGitBufferChangeMonitor

    typedef struct _IdeGitBufferChangeMonitor IdeGitBufferChangeMonitor;

## Property Details

### The `“repository”` property

      “repository”               GgitRepository *

The repository to use for calculating diffs.

Flags: Write / Construct Only