- Project: Improvemts of the version control system(vcs) of the editor integration and git-plugin.
- Student: Meru Patel (janglee123)
- Mentors: Gilles Roudiere (groud) and Twarit Waikar (IronicallySerious)
- Repositories:
- Editor Interface and UI(https://github.com/Janglee123/godot/tree/vcs-new-ui)
- Git-plugin(https://github.com/Janglee123/godot-git-plugin/tree/vcs-new)
Following to last project report, this report will introduce the quality of life updates, fixes and new features.
Yes, the built-in script editor will show the line change gutters as typed just like favourite code editors.
Now, Editor detects and load the plugin on startup. There is no need to manually set up a plugin each time, once it gets initialised. The project settings have a version control field for the purpose. It allows changing the settings anytime from project settings.
Version control plugins are unique compare to regular addons. They have dedicated interface built on EditorPlugin
class which communicates with integrals part of the Editor. Unlike other addons, version control interface needs more data in special structures in every operation. C++ Uses struct
to felicitate custom data structure and GDScript has Dictionary
for the same. As core data structures are not exposed to GDScript/GDNative, and use of Dictionary
in C++ with string indexes is error-prone, the interface has to convert Dictionary into nicely suited struct
for the C++. As a solution, the interface now provides helper functions. These functions ensure the correct structure of a Dictionary for data and later convert them to struct for c++.
Error popup is a small but impactful improvement. The new interface provides more operations then commit and stage/unstage. The new set of features requires better error handling. As an example, it is more likely to get an error message that "you have uncommitted changes" while performing operations like branch checkout or pull. The popups will grab attention faster compare to the output log.
And many other small fixes and improvements.
This report is supposed to be the last progress report and the end of the GSoC project. However There are many possibilities for VCS. Here are a few ones,
- Adding more advanced UI hooks for plugin and interface, like amend commit, revert commit, stash, multi remote support.
- Code editors like VSCode or Atom have a nice feature to auto sync with a remote. They stash current changes pull from remote and unstash changes back. This would be nice to have in Godot editor.
- Integrating VCS into other editor modules like file system dock or having support for resolving merge conflicts.
You are more than welcome to contribute to VCS integration and the godot-git-plugin. You can join the IRC channel #godotengine-vcs
to discuss the development.