### Interface

# Ide Vcs

#### Description

    interface Ide.Vcs : Ide.Object

No description available.

#### Prerequisite

In order to implement Vcs, your type must inherit from `IdeObject`.

#### Implementations

- IdeDirectoryVcs

#### Functions

###### ide_vcs_from_context

Gets the `IdeVcs` for the context.

###### ide_vcs_ref_from_context

A thread-safe version of ide_vcs_from_context().

#### Instance methods

###### ide_vcs_emit_changed

No description available.

###### ide_vcs_get_branch_name

Retrieves the name of the branch in the current working directory.

Available since: 3.32

###### ide_vcs_get_config

Retrieves an `IdeVcsConfig` for the `IdeVcs` provided. If the `IdeVcs` implementation does not support access to configuration, then `NULL` is returned.

Available since: 3.32

###### ide_vcs_get_priority

No description available.

###### ide_vcs_get_workdir

Retrieves the working directory for the context. This is the root of where the project files exist.

Available since: 3.32

###### ide_vcs_is_ignored

This function will check if `file` is considered an “ignored file” by the underlying Version Control System.

Available since: 3.32

###### ide_vcs_list_branches_async

No description available.

###### ide_vcs_list_branches_finish

No description available.

Available since: 3.32

###### ide_vcs_list_status_async

Retrieves the status of the files matching the request. If `directory_or_file` is a directory, then all files within that directory will be scanned for changes. If `include_descendants` is `TRUE`, the `IdeVcs` will scan sub-directories for changes as well.

Available since: 3.32

###### ide_vcs_list_status_finish

Completes an asynchronous request to ide_vcs_list_status_async().

Available since: 3.32

###### ide_vcs_list_tags_async

No description available.

###### ide_vcs_list_tags_finish

No description available.

Available since: 3.32

###### ide_vcs_path_is_ignored

This function acts like `ide_vcs_is_ignored()` except that it allows for using a regular file-system path.

Available since: 3.32

###### ide_vcs_push_branch_async

No description available.

###### ide_vcs_push_branch_finish

No description available.

###### ide_vcs_switch_branch_async

No description available.

###### ide_vcs_switch_branch_finish

No description available.

#### Properties

###### Ide.Vcs:branch-name

No description available.

###### Ide.Vcs:workdir

No description available.

#### Signals

###### Ide.Vcs::changed

The “changed” signal should be emitted when the VCS has detected a change to the underlying VCS storage. This can be used by consumers to reload their respective data structures.

Available since: 3.32

#### Interface structure

    struct IdeVcsInterface {
      GTypeInterface parent_interface;
      GFile* (* get_workdir) (
        IdeVcs* self
      );
      gboolean (* is_ignored) (
        IdeVcs* self,
        GFile* file,
        GError** error
      );
      gint (* get_priority) (
        IdeVcs* self
      );
      void (* changed) (
        IdeVcs* self
      );
      IdeVcsConfig* (* get_config) (
        IdeVcs* self
      );
      gchar* (* get_branch_name) (
        IdeVcs* self
      );
      void (* list_status_async) (
        IdeVcs* self,
        GFile* directory_or_file,
        gboolean include_descendants,
        gint io_priority,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      GListModel* (* list_status_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      );
      void (* list_branches_async) (
        IdeVcs* self,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      GPtrArray* (* list_branches_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      );
      void (* list_tags_async) (
        IdeVcs* self,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      GPtrArray* (* list_tags_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      );
      void (* switch_branch_async) (
        IdeVcs* self,
        IdeVcsBranch* branch,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      gboolean (* switch_branch_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      );
      void (* push_branch_async) (
        IdeVcs* self,
        IdeVcsBranch* branch,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      );
      gboolean (* push_branch_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      );

    }

###### Interface members

`parent_interface` |
    GTypeInterface
| No description available.
`get_workdir` |
    GFile* (* get_workdir) (
        IdeVcs* self
      )
| No description available.
`is_ignored` |
    gboolean (* is_ignored) (
        IdeVcs* self,
        GFile* file,
        GError** error
      )
| No description available.
`get_priority` |
    gint (* get_priority) (
        IdeVcs* self
      )
| No description available.
`changed` |
    void (* changed) (
        IdeVcs* self
      )
| No description available.
`get_config` |
    IdeVcsConfig* (* get_config) (
        IdeVcs* self
      )
| No description available.
`get_branch_name` |
    gchar* (* get_branch_name) (
        IdeVcs* self
      )
| No description available.
`list_status_async` |
    void (* list_status_async) (
        IdeVcs* self,
        GFile* directory_or_file,
        gboolean include_descendants,
        gint io_priority,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      )
| No description available.
`list_status_finish` |
    GListModel* (* list_status_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      )
| No description available.
`list_branches_async` |
    void (* list_branches_async) (
        IdeVcs* self,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      )
| No description available.
`list_branches_finish` |
    GPtrArray* (* list_branches_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      )
| No description available.
`list_tags_async` |
    void (* list_tags_async) (
        IdeVcs* self,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      )
| No description available.
`list_tags_finish` |
    GPtrArray* (* list_tags_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      )
| No description available.
`switch_branch_async` |
    void (* switch_branch_async) (
        IdeVcs* self,
        IdeVcsBranch* branch,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      )
| No description available.
`switch_branch_finish` |
    gboolean (* switch_branch_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      )
| No description available.
`push_branch_async` |
    void (* push_branch_async) (
        IdeVcs* self,
        IdeVcsBranch* branch,
        GCancellable* cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data
      )
| No description available.
`push_branch_finish` |
    gboolean (* push_branch_finish) (
        IdeVcs* self,
        GAsyncResult* result,
        GError** error
      )
| No description available.

#### Virtual methods

###### Ide.Vcs.changed

No description available.

###### Ide.Vcs.get_branch_name

Retrieves the name of the branch in the current working directory.

###### Ide.Vcs.get_config

Retrieves an `IdeVcsConfig` for the `IdeVcs` provided. If the `IdeVcs` implementation does not support access to configuration, then `NULL` is returned.

###### Ide.Vcs.get_priority

No description available.

###### Ide.Vcs.get_workdir

Retrieves the working directory for the context. This is the root of where the project files exist.

###### Ide.Vcs.is_ignored

This function will check if `file` is considered an “ignored file” by the underlying Version Control System.

###### Ide.Vcs.list_branches_async

No description available.

###### Ide.Vcs.list_branches_finish

No description available.

###### Ide.Vcs.list_status_async

Retrieves the status of the files matching the request. If `directory_or_file` is a directory, then all files within that directory will be scanned for changes. If `include_descendants` is `TRUE`, the `IdeVcs` will scan sub-directories for changes as well.

###### Ide.Vcs.list_status_finish

Completes an asynchronous request to ide_vcs_list_status_async().

###### Ide.Vcs.list_tags_async

No description available.

###### Ide.Vcs.list_tags_finish

No description available.

###### Ide.Vcs.push_branch_async

No description available.

###### Ide.Vcs.push_branch_finish

No description available.

###### Ide.Vcs.switch_branch_async

No description available.

###### Ide.Vcs.switch_branch_finish

No description available.