gitk: Fix missing commits when using -S or -G
PATCH 1/1 gitk: Fix missing commits when using -S or -G
When -S or -G is used as a filter option, the resulting commit list rarely contains all matching commits. Only a certain number of commits are displayed and the rest are missing.
"git log --boundary -S" does not return as many boundary commits as you might expect. gitk makes up for this in closevargs() by adding missing parent (boundary) commits. However, it does not change $numcommits, which limits how many commits are shown. In the end, some commits at the end of the commit list are simply not shown.
Change $numcommits whenever a missing parent is added.
--- gitk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
gitk +2 -2
@@ -1315,7 +1315,7 @@ proc commitonrow {row} { proc closevarcs {v} { global varctok varccommits varcid parents children - global cmitlisted commitidx vtokmod + global cmitlisted commitidx vtokmod numcommits set missing_parents 0 set scripts {}
@@ -1339,7 +1339,7 @@ proc closevarcs {v} { modify_arc $v $b } lappend varccommits($v,$b) $p - incr commitidx($v) + set numcommits [incr commitidx($v)] set scripts [check_interest $p $scripts] } }
Signature · 1 line
2.7.4
When -S or -G is used as a filter option, the resulting commit list rarely contains all matching commits. Only a certain number of commits are displayed and the rest are missing.
"git log --boundary -S" does not return as many boundary commits as you might expect. gitk makes up for this in closevargs() by adding missing parent (boundary) commits. However, it does not change $numcommits, which limits how many commits are shown. In the end, some commits at the end of the commit list are simply not shown.
Change $numcommits whenever a missing parent is added.
--- gitk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
gitk +2 -2
@@ -1315,7 +1315,7 @@ proc commitonrow {row} { proc closevarcs {v} { global varctok varccommits varcid parents children - global cmitlisted commitidx vtokmod + global cmitlisted commitidx vtokmod numcommits set missing_parents 0 set scripts {}
@@ -1339,7 +1339,7 @@ proc closevarcs {v} { modify_arc $v $b } lappend varccommits($v,$b) $p - incr commitidx($v) + set numcommits [incr commitidx($v)] set scripts [check_interest $p $scripts] } }
Signature · 1 line
2.7.4
Quoted 11 lines · Stefan Dotterweich
When -S or -G is used as a filter option, the resulting commit list rarely contains all matching commits. Only a certain number of commits are displayed and the rest are missing.
"git log --boundary -S" does not return as many boundary commits as you might expect. gitk makes up for this in
closevargs()by adding missing parent (boundary) commits. However, it does not change $numcommits, which limits how many commits are shown. In the end, some commits at the end of the commit list are simply not shown.Change $numcommits whenever a missing parent is added.
Nice catch; however, we should only update numcommits if the commits are for the current view, i.e. if $v == $curview.
Do you want to update the patch? If you prefer, I can update the patch and put a note in the commit message about the issue.
Paul.
Quoted 5 lines
Nice catch; however, we should only update numcommits if the commits are for the current view, i.e. if $v == $curview.
Do you want to update the patch? If you prefer, I can update the patch and put a note in the commit message about the issue.
Sure, feel free to update the patch as you see fit.
PATCH v3 1/1 gitk: Fix missing commits when using -S or -G
When -S or -G is used as a filter option, the resulting commit list rarely contains all matching commits. Only a certain number of commits are displayed and the rest are missing.
"git log --boundary -S" does not return as many boundary commits as you might expect. gitk makes up for this in closevargs() by adding missing parent (boundary) commits. However, it does not change $numcommits, which limits how many commits are shown. In the end, some commits at the end of the commit list are simply not shown.
Change $numcommits whenever a missing parent is added.
---
Here is an updated version of the patch. Feel free to change it if anything is missing.
gitk-git/gitk | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
gitk-git/gitk +4 -1
@@ -1315,7 +1315,7 @@ proc commitonrow {row} { proc closevarcs {v} { global varctok varccommits varcid parents children - global cmitlisted commitidx vtokmod + global cmitlisted commitidx vtokmod curview numcommits set missing_parents 0 set scripts {}
@@ -1340,6 +1340,9 @@ proc closevarcs {v} { } lappend varccommits($v,$b) $p incr commitidx($v) + if {$v == $curview} { + set numcommits $commitidx($v) + } set scripts [check_interest $p $scripts] } }
Signature · 1 line
2.8.0
Paul Mackerras
AppliedQuoted 10 lines · Stefan Dotterweich
When -S or -G is used as a filter option, the resulting commit list rarely contains all matching commits. Only a certain number of commits are displayed and the rest are missing.
"git log --boundary -S" does not return as many boundary commits as you might expect. gitk makes up for this in
closevargs()by adding missing parent (boundary) commits. However, it does not change $numcommits, which limits how many commits are shown. In the end, some commits at the end of the commit list are simply not shown.
Quoted 3 lines
Change $numcommits whenever a missing parent is added.
Signed-off-by Stefan Dotterweich <[email protected]>
Thanks, applied, with slight tweaks to the commit message.
Paul.