Blender SVN: New Features #273

Open
Demeter Dzadik wants to merge 13 commits from New-SVN-features into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
Member

While on holiday, I coded some SVN stuff for fun. It's not quite done yet, so publishing this branch and PR to track. I'd probably need one more day to wrap this up. Aiming at April 7.

Done:

  • Auto-update
    • Gets disabled when reverting a single file or whole repository, of course.
    • Hides manual update button when enabled.
  • Ability to cancel running operations.
    • Useful when you remember something just as you press "Commit" or change your mind about wanting to download an update for a 4GB previz .blend.
    • Cancelled operations require Cleanup though, which will not run automatically atm.
  • File tree view
    • The default remains the "Updates" view, which is a flat list of only modified files (either locally or on the remote).
    • Works with search. Parent folders of each matching search result will be visible and collapsible. That makes it better than the Outliner search! :D
    • Intended to support future sparse check-out workflow.
  • File size info, including folders.
    • This uses the svn list command for the whole repo which is a massive request from the SVN server so I hope it won't hammer it too much. It only runs when a new file appears on the repo, or when Cleanup is ran.
    • Disabled by default, since you don't usually care about file sizes.
  • New file list UI layout: less jumpy, more appealing, deals better with different UI scales. (Somewhat adaptive, in fact!)

Still TODO:

  • Sort folders first: This is just a quick thing I forgot to add.
  • Fully support sparse check-outs.
    • This is extremely tricky while still supporting per-file update feedback, because the only way to set a directory's SVN depth to infinity is to actually download the entire folder in one go (with no way to give the user more granular progress feedback), but I have a plan to get around this, and the file tree UI was a key pre-requisite for that idea.
    • This will include the ability to initiate an SVN check-out with "Sparse Mode" that will only create the folder tree, and not download any files at first. Then, you can choose which folders you want to actually have a local copy of. From then on, as per SVN standard, those folders will behave as expected, and any new files and sub-folders within them will be grabbed on update.
    • This also includes the ability to see files that are on the remote but not on the local machine, so you can choose to download individual files if you want to, and later get rid of them again. Although the workflow for the "getting rid of" part may be a bit unintuitive, as that would involve updating a containing folder with --set-depth empty.
While on holiday, I coded some SVN stuff for fun. It's not quite done yet, so publishing this branch and PR to track. I'd probably need one more day to wrap this up. Aiming at April 7. Done: - Auto-update - Gets disabled when reverting a single file or whole repository, of course. - Hides manual update button when enabled. - Ability to cancel running operations. - Useful when you remember something just as you press "Commit" or change your mind about wanting to download an update for a 4GB previz .blend. - Cancelled operations require Cleanup though, which will not run automatically atm. - File tree view - The default remains the "Updates" view, which is a flat list of only modified files (either locally or on the remote). - Works with search. Parent folders of each matching search result will be visible and collapsible. That makes it better than the Outliner search! :D - Intended to support future sparse check-out workflow. - File size info, including folders. - This uses the `svn list` command for the whole repo which is a massive request from the SVN server so I hope it won't hammer it too much. It only runs when a new file appears on the repo, or when Cleanup is ran. - Disabled by default, since you don't usually care about file sizes. - New file list UI layout: less jumpy, more appealing, deals better with different UI scales. (Somewhat adaptive, in fact!) Still TODO: - Sort folders first: This is just a quick thing I forgot to add. - Fully support sparse check-outs. - This is extremely tricky while still supporting per-file update feedback, because the only way to set a directory's SVN depth to infinity is to actually download the entire folder in one go (with no way to give the user more granular progress feedback), but I have a plan to get around this, and the file tree UI was a key pre-requisite for that idea. - This will include the ability to initiate an SVN check-out with "Sparse Mode" that will only create the folder tree, and not download any files at first. Then, you can choose which folders you want to actually have a local copy of. From then on, as per SVN standard, those folders will behave as expected, and any new files and sub-folders within them will be grabbed on update. - This also includes the ability to see files that are on the remote but not on the local machine, so you can choose to download individual files if you want to, and later get rid of them again. Although the workflow for the "getting rid of" part may be a bit unintuitive, as that would involve updating a containing folder with `--set-depth empty`.
Demeter Dzadik added 13 commits 2024-03-27 02:06:27 +01:00
But leave it disabled for now because it's super slow and should only run on demand.
Also comes with:
- svn_path setter now ensures consistent path separators
- File entries should now be added via new file_add() which also sets tree data
- Better UI messages for revert and update
- Revert and update now disable auto-update
- Auto-update now actually works
- Skip adding an entry for the SVN root directory
- SVN List is now a separate BackgroundProcess that is started only when a new file entry is added that isn't on the local repo. So it runs rarely.
- Tree view works well with search

TODO:
- Tree view currently not mutually exclusive with showing full paths, but will be soon.
- File and folder sizes are not yet displayed.
- UI for folder depth setting (sparse check-out) is pretty ugly atm.
- Don't force the search filter to be visible when it's empty
- Add a popover menu for file list display settings
- Tree View / Flat View is now an enum
- Switching to Tree View forces show_file_paths=False
- Fix active blend file was not displaying in flat view without search filter
- Increase indent distance of tree view
- Fix two cases of console errors on Reload Scripts

TODO:
- Still no file sizes
- The fact that Auto-Update isn't always visible in the UI feels wrong
- Move process info to the bottom so it doesn't make the UI jump around.
- Allow multiple processes' message to be shown.
- Calculate folder sizes.
- Tweak filelist UI columns.
- Auto-update button now always visible.
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin New-SVN-features:New-SVN-features
git checkout New-SVN-features
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: studio/blender-studio-pipeline#273
No description provided.