On Mon, Oct 23, 2023 at 10:19:47PM +0200, Oswald Buddenhagen wrote: > On Mon, Oct 23, 2023 at 12:29:12PM -0700, Jacob Stopak wrote: > > Those arrows showing how things move only really apply to "simulating" > > (dry runs) for specific commands like add, restore, rm, commit, stash, > > etc, so making the --table proposal a default status output would still > > miss those scenarios. > > > you're too focused on the status quo of your own tool. :-) Ha it's possible. I created git-sim with a very specific use case in mind so you're right it's probably worth rethinking that while taking into account Git's other functionality that wasn't in the picture with an external tool. > there is really nothing that would speak against the real commands reporting > what they just *actually did*. this would seem rather helpful for noobs and > other insecure users. That's true, it would be just as easy to report the results of a command (and even easier in some cases) than forecasting the result in a dry-run. The question is how to decide which one? Do you report the results of certain commands by default while hints are enabled? And only as a dry run when the --dry-run / -n flag is added? That actually would make sense as it wouldn't add "special" behavior to the dry run. The dry run would just report the exact same default output as the normal command, but omit the action. > if one really wanted, "you can also use this with --dry-run" could be part > of the hint that would say how to turn off the extra verbosity (or just the > hint itself, if one likes the verbosity). Interesting. So many ways to think about how to optimize the user interaction... > one could even go one step further and put at least the destructive commands > into interactive/confirmation mode by default. but that's probably a bridge > too far, as it would be potentially habit-forming in a bad way. That would be an interesting add on to our discussion above. So as a thought experiment, let's pretend there are no restrictions from traditional users, we could: 1) Enable verbose results output by default to certain commands, which could include a visual table-based output where applicable, and a hint to disable it. (Are hints currently command-specific? Or even scenario-specific within a command? Or is it all or nothing?) 2) Include verbose/table results on dry runs, and add dry run flags onto commands that should seem to have it for consistency. For example "git add" has a dry run flag but "git restore" (the hinted inverse operation) does not. I assume on dry runs hints wouldn't be used to communicate anything. 3) Well, I'll admit about once every 3 months I run "git stash --all" when I really meant "git stash --include-untracked" and proceed to lose a small part of my soul. This would be saved by a simple confirmation. I find that the stuff like "git reset --hard" doesn't bother me anymore since I know when to be careful with it and what things I can get back and how to do it. But I find the nasty ones are the things that sound like what you want but end up doing something bad. Not sure there is a way to isolate those though... I'm rambling now. But maybe for interactivity, at the very least it could be added to dry runs, like a "Here's what would happen, want to run it now?" I got this feedback a few times for git-sim as well.