-
Notifications
You must be signed in to change notification settings - Fork 29
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
Decide on basic use cases for explorer tree and scm views #318
Comments
IMO having file-level info about directories and more granular ways to manage them would be really helpful. See iterative/dvc#4657 (comment) and the rest of that issue as an example of how it might be useful. However, I don't know that is should be a blocker for v1 of the vscode extension because it might be a large undertaking to do it right and make directories more flexible. |
Thanks Matt, good summary and videos help to get thoughts together. Overall, on the #2, since it looks it's a continuation of that story: Primary things that we had in mind for the first release.
Now, on these two trees. My take from what I see. Both trees make sense. SCM should focus on the changes only (completely missing data directories or files is an edge case because it can mean either delete or not before dvc pull state). Main tree can focus on what we have - a list of datasets, models, intermediate things, etc. In both tree we don't want (for now) to synchronously do cloud check ( Some specific comments to the PR description:
👍 probably, we should add
not need to check an actual remote storage for now, we can rely on the local state Now, what is missing from what we already have? I would need to review and play with it a bit. And come back to you. But some ideas we can get from the list above ^^. Also the requirement we'll have is to make reasonably responsive. |
@shcheklein a couple of extra questions from me:
|
sounds reasonable to me, our case though that we have a bit different semantics. Question though - does Git extension had actions in the projects tree? Anyways, we can start with SCM only and iterate.
yes.
let's ignore this. This is mostly about the pipelines functionality (when |
Consolidation of current functionality into text along with product questionsTracked Tree ViewCurrent functionality:
[Q] Do we want to add the ability to Demo: Screen.Recording.2021-05-06.at.3.40.38.pm.movSCM ViewCurrent Functionality:
Refresher on statuses:
List of commands with enabled statuses:
[Q] Should we be able to
(Quick) Demo: Screen.Recording.2021-04-29.at.10.40.30.am.movFile DecorationsFile / directory decorations are provided to both of the above views and the built in explorer. I have tried to match our custom decoration to that of the built in git extension. Here is the current mapping:
Note: untracked is taken care of by the git extension's decorations. We need to override the files that are DVC tracked because they receive a "greyed out" decoration on account of being git ignored. [Q] What is missing from the above? Could we open this up to a wider audience? |
Thanks for the comprehensive summary, it helped a lot! Tracked Tree View
I saw that you already started doing that. If it's not too late I would postpone it for now. I still (even after going a few times, and trying it on multiple projects) don't understand the best focus for the A few question on my end (I'll check some of those things, but you might have some ideas already):
SCM View
Yes, it'll essentially add them into cache.
Yes, let's do this for now. I think it's allowed in DVC, so, let's allow it here also.
could you clarify please, how do we derive this status now? I see this
Some thoughts:
An important point that I'm still wrapping my mind around (since it goes beyond from what DVC is providing right now, all DVC commands like So, essentially, for every DVC tracked artifact there are two points of change - It explains that struggle with us unable to show If we start taking into account changes to
(we can detect also some DVC-specific cases - like Those are at least in the DVC Tracked View. How about SCM tree in this case? How should it complement the existing one? What should it focus on? Probably, mostly by helping to File Decorations
💯, create a checkbox in the review?
Yes, I'll start the process as we discussed. I'm worried a bit about experiments table - it's getting there, but can not be considered MVP yet. Anyways, I think it's good to start looking for the core users who will be testing and building this with us. |
Tracked Tree View
All of the files get rendered when you open that particular folder, there should be no limit placed on the number of files available to a folder, it just might the case that VS Code nearly dies (or actually does) when you open that folder.
AFAIK this is not possible. Did some further research this morning and it looks unlikely. We will have to recreate / build all of the functions that we want to show in this tree. SCM View
Currently I just take what
In this instance I copied what the git extension does. All of this is currently available in the context menu: and when there is more than one repository available in the workspace you get this view: You can I do think there is a place to push / pull to / from the remote in this view, perhaps only at the top level? That would more closely match what git provides.
We can then move the inline commands to a right click menu inside the tree view (as discussed on call).
Please correct me if I have oversimplified this. The way that I have been thinking about this is that the we want to help users navigate between the previous commit and the next one. I.e. if results are bad then I want to go back, if they are good then I want to commit and move forwards. We are lucky in that we get all of the git changes displayed for "free" in the SCM view right next to the DVC ones. To me there are two sets of changes available in the workspace, the changes tracked by git and then on top of those we have the changes tracked by DVC. We have this equation:
Here is an example of what is displayed when I arbitrarily change some of the information within the demo project's In order to get back to the previous git commit we would need to run In order to get us to the next commit we would need to Although in the case of running experiments it appears that everything is aligned when the experiment finishes and the user would just need to In the situation of new data being added I think that displaying the added (A) decoration for files / directories that have been added to DVC but not checked in to git would be useful to users. It would let them know that action still needs to be taken / encourage them to commit the "data placeholder(s)" into git. If the above shows the correct order of operation then we should add repo level commands to short circuit the current workflow (IMO). File Decoration
This is already done (so we can cross one thing off the list 👍🏻 ). |
Based on further discussion with @shcheklein this morning: We want to overlay any git differences between the workspace and the previous commit onto the equivalent dvc tracked files. E.g if we have a git tracked
Where The next step is now to investigate ☝🏻 this looks pretty good. Here is some example output after
I'll plug We (probably) want to parse out files like |
Nice summary! That makes sense to me, although I want to clarify one thing with the third row:
I think this would happen if changes were made and dvc committed, and then further changes to Is there an icon to commit the changes in the DVC row? What is this going to do in the third row example? What will an icon to revert the changes do (if it will exist)? It seems like dvc commits are kind of analogous to staging changes in Git. Modifications may be staged or unstaged, but only staged modifications will be reflected in the Git commit. Staged modifications will show as unmodified after the Git commit, unstaged ones will still show as modified. Would it make sense to borrow from how Git staging is handled? |
There are both When I dropped My understand now is that:
This really helped and I have made a prototype following this criteria:
I.e if your dvc workspace matches what is going to be committed into git then we provide a Here are some demos of these two different statuses in action ("unstaged" = blue, "staged" = yellow):
Screen.Recording.2021-05-21.at.6.40.53.pm.movwe can commit into git and roll forwards (not action needed in dvc scm): Screen.Recording.2021-05-21.at.6.48.36.pm.movor discard and roll back (run Screen.Recording.2021-05-21.at.6.50.29.pm.movThe exact UX needs TBD but I think we should look to short circuit the two steps wherever possible. LMK what you think, happy to jump on a call and discuss next week. Note: |
I think we have arrived at our basic use cases. We have: Decorations
Explorer tree view
SCM view
If we are happy with these basic use cases then I will close this issue and move all remaining items into #330. LMK what you think. Thanks |
@mattseddon great summary, and sounds right to me. Thanks. |
Closing, will track and resolve all issues under #330. 🎉 🚀 |
We now have a couple of working prototype views available to the extension with respect to status & LFS. The questions for each of the two views are now:
Here are more detailed descriptions of each of the views and my answers to the above:
A scm view (#169):
Screen.Recording.2021-04-13.at.2.51.30.pm.mov
We can currently add new, push and pull modified or pull deleted.
Answers:
A custom explorer tree view (#176):
Screen.Recording.2021-04-23.at.1.01.54.pm.mov
For this view there are a couple of caveats. The current behaviour of
list .
does not support the main use case that we are trying to support by implementing it. Also, we could try and "stuff" this behaviour into the scm view in some form or another (but I don't think that is a great idea).Answers:
@shcheklein @rogermparent @dberenbaum would love to get your input on this one, is there anyone else that we should rope in?
cc @yalozhkin
Thanks
The text was updated successfully, but these errors were encountered: