-
-
Notifications
You must be signed in to change notification settings - Fork 21.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Update VCS Integration UX and rework EditorVCSInterface for network features #53371
Conversation
Now, version control editor plugin will auto load plugin on startup once it initialized by user. Also this opens a window to configure attributes of plugin and interface. :)
Also renames `addon` to `plugin` in the context of the VCS interface
f2cae0e
to
5861b38
Compare
Add force push checkbox in the Commit dock. Also add some missing opportunities for checking the VCS state again on from UI inputs
1e39188
to
645c040
Compare
I am attaching a few screenshots from a build to date. A large part of this UI is thanks to @Janglee123's work in the past! Requesting any comments, suggestions because this PR is going to reach merge-quality soon enough. Split/Unified diffs. The Editor stores the remote username and password only in memory, it doesn't save them on the file system due to security issues. Thus, the user has to always add their credentials whenever they open Godot. Could there be a better way where the editor is able to pick up the username and password but not a hacker? A Git remote can be configured to use a PAT token by default (by embedding the token in the remote URL itself) but that also doesn't seem to be much secure either. SSH access needs testing. Access to repositories using a Github PAT token is tested. |
Honestly I am not a fan of having the commit history and the branch toolbar at the bottom. As you already mentioned on rocket chat, the commit UI flows from the top to the bottom. IMO the same should hold true for the rest. |
@Ansraer Yes that makes a lot of sense. I guess users should really consider they are on the proper branch and their HEAD is pointing at the right commit before they even stage anything, and for that the branch selection and commit history should be at the top. A couple follow ups on that.
|
However separating out the network related operations into different areas sounds a bit un-intuitive because the normal sentiment for seeing a pull button is to assume the push button is somewhere close |
I can't comment on the code much, but nothing stood out as obviously wrong. So that's fine for me. The interface looks great IMO, the order seems fine to me. I don't mind the branch change at the bottom, as it's not something you would need to use often compared to the other things. Also, I think it makes sense to keep the push/pull button at the bottom, as pushing is usually done when you are done committing things (and it also makes sense to keep the branch next to those buttons). |
c39df40
to
60d260a
Compare
c4f4615
to
2bd0330
Compare
Store username and SSH key paths in Editor Settings. Shift the VCS autoload settings registrations to project_settings.cpp
Marking as ready for review ✔️ But opening this for review because the main feature set is pretty much done. |
cc87030
to
fb28e9a
Compare
fb28e9a
to
efcd2cc
Compare
I am also adding a few more features for deleting branches and remote, and possibly commits, so turning this in WIP back again |
Listing a higher-level overview (from my initial notes I made before starting working on this) of the changes in this PR so that it is easier to review. I will be updating this list till the PR reaches a conclusion.
|
I recommend splitting the work and keeping the pending work not pending for too long. Other contributors have other opinions. |
@fire Yes, I would agree that breaking it up makes the most sense. However, this PR is adding only those features which directly affect the If I were to break the changes to this API into different PRs, then there would be commits in the Godot history that would not have a fully complete revision of the API so the VCS plugins would break for those intermediate versions of Godot, which is where I would like to hear more opinions from other contributors. |
In reply to my last comment: I have squashed a few commits and will now close this PR. I will be opening new PRs with each new PR starting with a commit that directly changes the EditorVCSInterface API. This way, the PR count for the same features shouldn't get out of control and still make it possible for this PR to be broken into smaller ones. (I realized the cost of adding in code that is not reviewed or risking the work to be pending for long is not worth adding a few commits in history which don't work with the plugin that's currently in sync with the most recent version of EditorVCSInterface) |
FYI: New PR with only the first batch of changes is up here: #53900 I will add any code changes that I make to address any review comments in the PR, and then rebase the next batch of commits on it, and then send another PR with those commits. |
This PR solves the conflicts in #39255, makes it merge ready, fixes a few bugs, and updates the EditorVCSInterface API.
This PR adds breaking changes in the VCS integration. VCS plugins made in the past will need heavy changes to comply with the newer API which supports features like push, pull, fetch, branch changes, etc.
The Git plugin is also being updated with this PR at the same pace (godotengine/godot-git-plugin#84).
4.x will use GDExtension instead of GDNative, so I have only opened the PR against 3.x.