Skip to content
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

Project manager: Add option to backup project when it will be changed #104624

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

dsnopek
Copy link
Contributor

@dsnopek dsnopek commented Mar 25, 2025

The goal is to allow users to easily backup their projects if Godot will make irreversible changes to them. While this could make it more likely that folks will make backups in general, I'm mainly thinking about Android where managing files at all can be difficult (or require installing additional apps to make it not difficult).

I'm not entirely sure about the current approach, though, so I'm hoping to have a discussion about that, and I'm very open to changing direction.

Current Approach

If opening a project will lead to irreversible changes, it adds a "Backup Project" button:

Selection_305

Which will take the user to a variation on the usual dialog for creating a project, in order to allow them to pick the directory and name the project:

Selection_306

After pressing "Backup", the old project will be copied to the new path, the project.godot will be edited with the new name, and then it'll be added to the list of projects.

This doesn't lead to the original project being opened - the user would have to open it again, but then this time click "OK".

Issues

  • It doesn't lead to the project being opened at the end, and the user has to open it again. I did it this way because there are sometimes multiple options, like when opening a 3.x project, you could get the "Convert Full Project" button, and we need to leave a way for users to select either that or the "OK" button
  • There is no progress dialog when copying the project. Presently, it just freezes until the copy is finished. It should have a progress dialog. (This one isn't about the approach - it's something that will need to be added regardless of the approach.)

Alternative Approaches

  1. Rather than sneaking in a "Backup Project" button into the dialog when changes are possible, we could have a "Copy Project" project button on the side and it'd be up to the user to use that button on their own. This takes the user out of the flow, so they may be less likely to do it, but it would be less weird that the project doesn't get opened immediately after completing the backup. Mockup:
    Selection_307
  2. Rather than being a button, there could be a "Make a backup first" checkbox in the dialog. Then regardless of which button the user clicks, it'll go to the dialog to make the backup, and then afterwards proceed to opening the project. Mockup:
    Selection_308
  3. Rather than making a copy of the old project, and then opening the original (upgrading it), should this open the copy (leaving the original alone)? I was torn on which way to go, and I'm not sure I picked the right one. I guess if you think of the upgraded project as a continuation of the original, it's nice for that to be in the same directory going forward?

Anyway, I'm curious to hear what folks think!

@dsnopek dsnopek added this to the 4.x milestone Mar 25, 2025
@dsnopek dsnopek marked this pull request as draft March 25, 2025 21:05
@passivestar
Copy link
Contributor

we could have a "Copy Project" project button on the side

Duplicate button is useful on its own when making a lot of small similar projects regardless of whether there are other ways to backup. It would close godotengine/godot-proposals#2292

Besides that dialog with a "Make Backup First" checkbox that makes a copy and then upgrades and opens the original makes the most sense to me

@arkology
Copy link
Contributor

I think using both (1) and (2) from alternative approaches would be great.

@JekSun97
Copy link
Contributor

I often do this manually, it would be useful to have such a feature.

@m4gr3d
Copy link
Contributor

m4gr3d commented Mar 27, 2025

I'm also aligned with @passivestar and @arkology on going with (1) and (2) from the alternative approaches.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants