Inheritance #

Table of contents

EditorVCSInterface #

is_instantiable, editor, not_builtin_classes

Version Control System (VCS) interface, which reads and writes to the local VCS in use.

Defines the API that the editor uses to extract information from the underlying VCS. The implementation of this API is included in VCS plugins, which are GDExtension plugins that inherit EditorVCSInterface and are attached (on demand) to the singleton instance of EditorVCSInterface. Instead of performing the task themselves, all the virtual functions listed below are calling the internally overridden functions in the VCS plugins to provide a plug-n-play experience. A custom VCS plugin is supposed to inherit from EditorVCSInterface and override each of these virtual functions.

Members #

Methods #

virtual func _checkout_branch(branch_name: String) -> bool#

Checks out a branch_name in the VCS.

virtual func _commit(msg: String) -> void#

Commits the currently staged changes and applies the commit msg to the resulting commit.

virtual func _create_branch(branch_name: String) -> void#

Creates a new branch named branch_name in the VCS.

virtual func _create_remote(remote_url: String) -> void#

Creates a new remote destination with name remote_name and points it to remote_url. This can be an HTTPS remote or an SSH remote.

virtual func _discard_file(file_path: String) -> void#

Discards the changes made in a file present at file_path.

virtual func _fetch(remote: String) -> void#

Fetches new changes from the remote, but doesn't write changes to the current working directory. Equivalent to git fetch.

virtual func _get_branch_list() -> String[]#

Gets an instance of an Array of Strings containing available branch names in the VCS.

virtual func _get_current_branch_name() -> String#

Gets the current branch name defined in the VCS.

virtual func _get_diff(area: int) -> Dictionary[]#

Returns an array of Dictionary items (see create_diff_file, create_diff_hunk, create_diff_line, add_line_diffs_into_diff_hunk and add_diff_hunks_into_diff_file), each containing information about a diff. If identifier is a file path, returns a file diff, and if it is a commit identifier, then returns a commit diff.

virtual func _get_line_diff(text: String) -> Dictionary[]#

Returns an Array of Dictionary items (see create_diff_hunk), each containing a line diff between a file at file_path and the text which is passed in.

virtual func _get_modified_files_data() -> Dictionary[]#

Returns an Array of Dictionary items (see create_status_file), each containing the status data of every modified file in the project folder.

virtual func _get_previous_commits(max_commits: int) -> Dictionary[]#

Returns an Array of Dictionary items (see create_commit), each containing the data for a past commit.

virtual func _get_remotes() -> String[]#

Returns an Array of Strings, each containing the name of a remote configured in the VCS.

virtual func _get_vcs_name() -> String#

Returns the name of the underlying VCS provider.

virtual func _initialize(project_path: String) -> bool#

Initializes the VCS plugin when called from the editor. Returns whether or not the plugin was successfully initialized. A VCS project is initialized at project_path.

virtual func _pull(remote: String) -> void#

Pulls changes from the remote. This can give rise to merge conflicts.

virtual func _push(force: bool) -> void#

Pushes changes to the remote. If force is true, a force push will override the change history already present on the remote.

virtual func _remove_branch(branch_name: String) -> void#

Remove a branch from the local VCS.

virtual func _remove_remote(remote_name: String) -> void#

Remove a remote from the local VCS.

virtual func _set_credentials(ssh_passphrase: String) -> void#

Set user credentials in the underlying VCS. username and password are used only during HTTPS authentication unless not already mentioned in the remote URL. ssh_public_key_path, ssh_private_key_path, and ssh_passphrase are only used during SSH authentication.

virtual func _shut_down() -> bool#

Shuts down VCS plugin instance. Called when the user either closes the editor or shuts down the VCS plugin through the editor UI.

virtual func _stage_file(file_path: String) -> void#

Stages the file present at file_path to the staged area.

virtual func _unstage_file(file_path: String) -> void#

Unstages the file present at file_path from the staged area to the unstaged area.

func add_diff_hunks_into_diff_file(diff_hunks: Dictionary[]) -> Dictionary#

Helper function to add an array of diff_hunks into a diff_file.

func add_line_diffs_into_diff_hunk(line_diffs: Dictionary[]) -> Dictionary#

Helper function to add an array of line_diffs into a diff_hunk.

func create_commit(offset_minutes: int) -> Dictionary#

Helper function to create a commit Dictionary item. msg is the commit message of the commit. author is a single human-readable string containing all the author's details, e.g. the email and name configured in the VCS. id is the identifier of the commit, in whichever format your VCS may provide an identifier to commits. unix_timestamp is the UTC Unix timestamp of when the commit was created. offset_minutes is the timezone offset in minutes, recorded from the system timezone where the commit was created.

func create_diff_file(old_file: String) -> Dictionary#

Helper function to create a Dictionary for storing old and new diff file paths.

func create_diff_hunk(new_lines: int) -> Dictionary#

Helper function to create a Dictionary for storing diff hunk data. old_start is the starting line number in old file. new_start is the starting line number in new file. old_lines is the number of lines in the old file. new_lines is the number of lines in the new file.

func create_diff_line(status: String) -> Dictionary#

Helper function to create a Dictionary for storing a line diff. new_line_no is the line number in the new file (can be -1 if the line is deleted). old_line_no is the line number in the old file (can be -1 if the line is added). content is the diff text. status is a single character string which stores the line origin.

func create_status_file(area: int enumEditorVCSInterface.TreeArea) -> Dictionary#

Helper function to create a Dictionary used by editor to read the status of a file.

Pops up an error message in the editor which is shown as coming from the underlying VCS. Use this to show VCS specific error messages.

Annotations #

Constants #

const CHANGE_TYPE_NEW = 0 enum ChangeType#

A new file has been added.

const CHANGE_TYPE_MODIFIED = 1 enum ChangeType#

An earlier added file has been modified.

const CHANGE_TYPE_RENAMED = 2 enum ChangeType#

An earlier added file has been renamed.

const CHANGE_TYPE_DELETED = 3 enum ChangeType#

An earlier added file has been deleted.

const CHANGE_TYPE_TYPECHANGE = 4 enum ChangeType#

An earlier added file has been typechanged.

const CHANGE_TYPE_UNMERGED = 5 enum ChangeType#

A file is left unmerged.

const TREE_AREA_COMMIT = 0 enum TreeArea#

A commit is encountered from the commit area.

const TREE_AREA_STAGED = 1 enum TreeArea#

A file is encountered from the staged area.

const TREE_AREA_UNSTAGED = 2 enum TreeArea#

A file is encountered from the unstaged area.

Constructors #

Enums #

ChangeType#

enum ChangeType { CHANGE_TYPE_NEW = 0, CHANGE_TYPE_MODIFIED = 1, CHANGE_TYPE_RENAMED = 2, CHANGE_TYPE_DELETED = 3, CHANGE_TYPE_TYPECHANGE = 4, CHANGE_TYPE_UNMERGED = 5, }

TreeArea#

enum TreeArea { TREE_AREA_COMMIT = 0, TREE_AREA_STAGED = 1, TREE_AREA_UNSTAGED = 2, }

Operators #

Signals #

Theme Items #

Tutorials #