Skip to content

After staging, next unstaged change is janky #2748

@Tillerino

Description

@Tillerino

The logic that chooses the next unstaged change after staging a change is kind of janky and breaks my flow. I'll call this a bug, call it what you want. I believe the logic is basically nothing. It just tries to keep the vertical visual position in the tree of unstaged changes. Since that is a tree though, it feels weird. Everything is fine if you have a flat list of files, but I usually don't.

Here's the set up:

mkdir -p /tmp/treebug
cd /tmp/treebug
git init

echo hunk > f
mkdir g
  echo hunk > g/g
  echo hunk > g/h
echo hunk > i
echo hunk > j

Then enter gitui...

Image

Moving into directories

Ok, let's stage f.

Image

Hm, I did not move to the next file. Instead, I moved to the directory g. So just pressing enter repeatedly will not stage file by file, but sometimes stage directories. I don't like this, but whatever. The big issue arises when I am staging from the diff view. This is my initial diff view:

Image

Now, when I stage this hunk, my next screen is the following:

Image

I am seeing the diff of nothing, and I can't do anything in this view. I am forced to return to the tree and navigate to the next file. So staging hunk-by-hunk by repeatedly pressing enter does not work either.

Moving out of directories

Okay, f has been staged. We navigated to the next file manually:

Image

Let's stage g:

Image

Good, let's stage h:

Image

We just skipped i. That is frustrating. Again, in the file tree view, I can correct this. In the diff view, I cannot.

The fix

Not sure, one would have to experiment. Maybe this would already work:

  • After staging a file, move to the next file.
  • After staging a directory, keep the vertical position in the GUI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions