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

Add projet versionning #233

Open
loicknuchel opened this issue Jun 14, 2023 · 2 comments
Open

Add projet versionning #233

loicknuchel opened this issue Jun 14, 2023 · 2 comments

Comments

@loicknuchel
Copy link
Contributor

As suggested in our Slack community (join here), adding project versions would help a lot on collaboration.

We will need:

  • a version of the project created each time someone save a project
  • list version in UI
  • view a previous version in read only
  • rollback to a previous version (create a new version with the old one)
  • delete a version
  • name a version (with a description)

Technically we will:

  • add a project_versions table (id, project, name, description, created_by, created_at)
  • save project files for versions in /projects/$uuid/$iso-date.json
  • create a version whenever a project is saved
  • CRUD API for versions (list for a project, get, update, delete)
@imtibbet
Copy link

Thank you @loicknuchel! There's one part of this that we talked about in Slack that I don't see in your description, which is handling multiple collaborators editing the same project. When they save they should be warned if they made their changes to an old version, and in general they should notified when someone makes changes.

Without this feature collaborators will silently overwrite each other. This will lead to a frustrated user who finds their work has been overwritten, with their only recourse being to walk back through the version history to manually merge in their overwritten work.

@loicknuchel
Copy link
Contributor Author

Hi @imtibbet
Indeed, I did not put that here as most of it is already in place.
When you save, I fetch the current saved project and if it has changed, I try to apply your changes on top of it (like a git rebase).
If there is conflict I don't save and ask you to refresh the project (losing your changes), but at least not silent overrides.

What is still missing (and planned at some point) is a presence feature to see other users on the project at the same time and on which layout they are (helping to avoid conflicts).

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

No branches or pull requests

2 participants