Description
Hi,
I'm not sure it's even a bug.
When I was doing stashing in Stash[4] tab, you can switch what to stash by toggling staged/untracked files with keys i/u
respectively.
At first I thought it's noop, since there was no visual indication or cue that anything changed. It works as it should by omitting untracked or staged files when toggling with respective keys.
I figured out that it behaves correctly without any obvious clue only by accident.
I had a single untracked directory with different user. The directory had root
user and I couldn't stash it cause of permissions. Than the window popped up showing when I was attempting to stash with stashing configuration {StashUntracked: true, ...}
. When pressing u
, the config changed and I could stash only tracked files as expected.
To Reproduce
Create staged or untracked files with elevated permission like root
in project folder. Notice error, than press u or i and see it stashes as expected.
Expected behavior
I expect to have visual cue for what will be stashed. It should be reflected in the file tree view upon pressing i/u
keys.
Screenshots
The below screenshot actually show correct behavious, as there's nothing to stash, but files are still listed in file tree view
Context (please complete the following information):
- OS/Distro + Version:
Fedora Linux 39 (Workstation Edition) x86_64
- GitUI Version
nightly 2024-06-09 ()
- Rust version:
1.74.0-x86_64-unknown-linux-gnu
Activity
[-]Stashing tab shows not stage/ not tracked files in view[/-][+]Stashing tab shows not staged/ not tracked files in view[/+]extrawurst commentedon Jun 27, 2024
i am confused. could you define an example case with some bash setting the files up in a way that the problem can be reproduced?
ondrej-ivanko commentedon Jun 29, 2024
Hi, I am truly sorry. I only recently noticed that small box
Options
in the top right corner on tab 4 indicating which files I have selected for stashing. I just couldn't notice it :)) Therefore I thought there is no indication what is actually being stashed.What I was hoping to see in the future is visual cue in form of filenames, that will be stashed. For example

The
file1.txt
is being tracked, the other two files are not. I would think the screen would show onlyfile1.txt
, since the options is set to not stash untracked files.In this case no files are currently staged. And the options is set to not stash staged files (keep index). Therefore I would expect not to see any filenames.
So it's actually not a bug as I found out, but maybe a possible feature! :))
options
ingit_status.fetch()
#2287kanielrkirby commentedon Jul 6, 2024
So currently, as I understand it, it seems that these options aren't used yet for a visual representation, but are used for a functional purpose. e.g., if you toggle untracked off (
u
), and write a stash (w
), untracked files aren't added to the stash.https://github.com/extrawurst/gitui/blob/6ec7eea02b201fc39fbecdbb787d46cdca22624a/src/tabs/stashing.rs#L71-L80
https://github.com/extrawurst/gitui/blob/6ec7eea02b201fc39fbecdbb787d46cdca22624a/asyncgit/src/sync/stash.rs#L100-L125
A couple ideas from me would be 1, we could add an identifier (
?
) to files that aren't tracked, and 2, we implement options for the the visual side (which looks straightforward as far as I can tell). I think it'd look something like this:I've made a PR with that second change at the least (without the identifier idea).