vizhub-issue-tracker
vizhub-issue-tracker copied to clipboard
Revision History
@curran what is revision history?
Like Git commits.
As you change a viz over time, each version should be stored permanently, so that you can restore to that version, fork from it, or link to it.
I think there will be the notion of a "commit", a specific version that gets saved. There are open questions around when to mark versions. For example, each keystroke could be its own version? Surely that's too detailed, would be too many versions. Maybe every minute make a commit automatically if the code has changed?
This will mostly be something "under the hood", where the user doesn't control when commits are saved. However, we might want to (as a later follow-on feature) allow users to make notes for specific versions. For example we might want to have an option like "Make a commit" where the user manually decides to mark a spefic version, and perhaps store a message for it like with Git commits.
Also tagged versions might be useful too - the need for this happens a ton when working with clients. Example scenario: you get a cool feature half-working and want to send a demo link to your client so they can see it (but don't want to deploy it to the "mainline" deployed version that is live to the public. In this sense, VizHub can be made an extremely useful tool for staging examples, once this version history thing is added.
I've often wanted to "tag" a specific version to be preserved or called out specifically in the revision history. This would be amazing as it would allow for iteration without losing access to the previous steps. Currently forking when you want to "save" an old version is pretty much the only option.
Some good inputs for Git data model and naming conventions: https://github.blog/2020-12-17-commits-are-snapshots-not-diffs/#commits-are-snapshots
- The commit has a list of parent commits corresponding to the previous snapshots.
- A commit with no parents is a root commit.
- A commit with multiple parents is a merge commit.
- Commits also contain metadata describing the snapshot such as author and committer (including name, email address, and date) and a commit message.