gitui-org / gitui-org/gitui

After staging, next unstaged change is janky

Offen
#2,748 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
feature-request good first issue
Vorherrschende Sprache
Rust
Sterne
22.5k
Forks
773
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Reproduziere das Verhalten in gitui mit dem Setup /tmp/treebug und den oben beschriebenen Datei-Baum- und Diff-Ansichten. Verfolge, wie die nächste nicht bereitgestellte Änderung ausgewählt wird, nachdem eine Datei, ein Verzeichnis oder ein Hunk zur Staging-Area hinzugefügt wurde. Fertig bedeutet, dass wiederholtes Staging zur nächsten Datei weitergeht und weder einen leeren Diff anzeigt noch Dateien überspringt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
git, rust
Bereich
cli
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.