gitui-org / gitui-org/gitui

edit cmd misleading when focusing commit msg in inspect view

オープン
#1,645 コメント 7 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

bug good first issue
主要言語
Rust
スター
22.5k
フォーク
774
PR マージ指標
30日以内にマージされた PR はありません

説明

Describe the bug
This is the best git tool, light, simple and visual!
However, I have found one that does not work as intended.
When in inspect mode on the Log tab, I cannot edit the commit message by clicking shift + i (vim keybinding).

To Reproduce
Steps to reproduce the behavior:

  1. Go to Log tab
  2. Click on enter and l(Inspect)
  3. Focus Message block
  4. click shift + i

Expected behavior
Able to edit commit messages.

Screenshots
If applicable, add screenshots to help explain your problem.

Context (please complete the following information):

  • OS/Distro + Version: macOS 12.5.1
  • GitUI Version 0.22.1
  • Rust version: 1.64

Additional context
Log of the operation.

14:53:56 [TRACE] (6) mio::poll: [/Users/brew/Library/Caches/Homebrew/cargo_cache/registry/src/github.com-1ecc6299db9ec823/mio-0.8.5/src/poll.rs:532] registering event source with poller: token=Token(0), interests=READABLE
14:53:56 [TRACE] (1) gitui::watcher: [src/watcher.rs:21] poll watcher: false recommended: Fsevent
14:53:56 [TRACE] (6) mio::poll: [/Users/brew/Library/Caches/Homebrew/cargo_cache/registry/src/github.com-1ecc6299db9ec823/mio-0.8.5/src/poll.rs:532] registering event source with poller: token=Token(1), interests=READABLE
14:53:56 [TRACE] (1) gitui::app: [src/app.rs:119] open repo at: RefCell { value: Path(".") }
14:53:56 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:53:56 [TRACE] (1) gitui: [src/main.rs:200] app start: 4 ms
14:53:56 [TRACE] (1) gitui::app: [src/app.rs:477] update
14:53:56 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:53:56 [TRACE] (1) gitui::app: [src/app.rs:496] update_async: Git(Tags)
14:53:56 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:53:56 [TRACE] (1) gitui::app: [src/app.rs:496] update_async: Git(Branches)
14:53:56 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:53:56 [TRACE] (1) gitui::app: [src/app.rs:496] update_async: Git(Tags)
14:53:56 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:53:56 [TRACE] (1) gitui::app: [src/app.rs:496] update_async: Git(Branches)
14:53:56 [TRACE] (1) gitui::app: [src/app.rs:496] update_async: Git(Log)
14:53:56 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:53:56 [TRACE] (1) gitui::app: [src/app.rs:496] update_async: Git(Log)
14:53:56 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:53:58 [TRACE] (1) gitui::app: [src/app.rs:382] event: Input(Key(KeyEvent { code: Enter, modifiers: NONE, kind: Press, state: NONE }))
14:53:58 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:53:58 [TRACE] (1) asyncgit::commit_files: [asyncgit/src/commit_files.rs:83] request: CommitFilesParams { id: CommitId(d37cf315857616304739afcc65155f049347c25f), other: None }
14:53:58 [TRACE] (2) asyncgit::commit_files: [asyncgit/src/commit_files.rs:128] get_commit_files: CommitFilesParams { id: CommitId(d37cf315857616304739afcc65155f049347c25f), other: None } (1)
14:53:58 [TRACE] (1) gitui::app: [src/app.rs:496] update_async: Git(CommitFiles)
14:53:58 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:53:58 [DEBUG] (8) gitui::watcher: notify events: 1
14:53:58 [DEBUG] (8) gitui::watcher: notify [0]: DebouncedEvent { path: "/Users/aktdaaaa/sample/.git/gitui", kind: Any }
14:53:58 [TRACE] (1) gitui::app: [src/app.rs:477] update
14:53:58 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:54:00 [TRACE] (1) gitui::app: [src/app.rs:382] event: Input(Key(KeyEvent { code: Char('l'), modifiers: NONE, kind: Press, state: NONE }))
14:54:00 [TRACE] (1) asyncgit::commit_files: [asyncgit/src/commit_files.rs:83] request: CommitFilesParams { id: CommitId(d37cf315857616304739afcc65155f049347c25f), other: None }
14:54:00 [TRACE] (1) gitui::app: [src/app.rs:477] update
14:54:00 [TRACE] (2) asyncgit::commit_files: [asyncgit/src/commit_files.rs:128] get_commit_files: CommitFilesParams { id: CommitId(d37cf315857616304739afcc65155f049347c25f), other: None } (1)
14:54:00 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:54:00 [TRACE] (1) gitui::app: [src/app.rs:496] update_async: Git(CommitFiles)
14:54:00 [TRACE] (1) asyncgit::tags: [asyncgit/src/tags.rs:67] request
14:54:00 [TRACE] (1) asyncgit::diff: [asyncgit/src/diff.rs:98] request DiffParams { path: "DataTypes.md", diff_type: Commit(CommitId(d37cf315857616304739afcc65155f049347c25f)), options: DiffOptions { ignore_whitespace: false, context: 3, interhunk_lines: 0 } }
14:54:00 [TRACE] (1) gitui::app: [src/app.rs:496] update_async: Git(Diff)
14:54:01 [TRACE] (1) gitui::app: [src/app.rs:382] event: Input(Key(KeyEvent { code: Char('k'), modifiers: NONE, kind: Press, state: NONE }))
14:54:03 [TRACE] (1) gitui::app: [src/app.rs:382] event: Input(Key(KeyEvent { code: Char('I'), modifiers: SHIFT, kind: Press, state: NONE }))
14:54:05 [TRACE] (1) gitui::app: [src/app.rs:382] event: Input(Key(KeyEvent { code: Char('I'), modifiers: SHIFT, kind: Press, state: NONE }))
14:54:05 [TRACE] (1) gitui::app: [src/app.rs:382] event: Input(Key(KeyEvent { code: Char('I'), modifiers: SHIFT, kind: Press, state: NONE }))
14:54:07 [TRACE] (1) gitui::app: [src/app.rs:382] event: Input(Key(KeyEvent { code: Char('c'), modifiers: CONTROL, kind: Press, state: NONE }))

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

src/app.rs のキーイベント処理から始め、Log タブのシーケンスを再現します: Enter、l、Message ブロックにフォーカスし、その後 Shift+I。inspect モードのフォーカスがキーをどのように処理するかを追跡し、コミットメッセージを編集できるという期待される動作と比較します。報告された操作が意図したとおりに動作し、再現手順が失敗しなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
rust
領域
cli
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
55/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。