dashboard / ilyagr/gitk / gitk: Add user preference to hide custom references #71 rss

closed · opened on 2025-08-03T05:37:21Z by ilyagr
Help
checkout latest patchset:
ssh pr.pico.sh print pr-71 | git am -3
checkout any patchset in a patch request:
ssh pr.pico.sh print ps-X | git am -3
add changes to patch request:
git format-patch main --stdout | ssh pr.pico.sh pr add 71
add review to patch request:
git format-patch main --stdout | ssh pr.pico.sh pr add --review 71
accept PR:
ssh pr.pico.sh pr accept 71
close PR:
ssh pr.pico.sh pr close 71

Logs

ilyagr created pr with ps-140 on 2025-08-03T05:37:21Z
ilyagr added ps-141 on 2025-08-03T05:40:15Z
ilyagr changed status on 2025-08-03T05:45:12Z {"status":"closed"}

Patchsets

ps-140 by ilyagr on 2025-08-03T05:37:21Z
Range Diff ↕ rd-141
1: 4a4a512 ! 1: 2441e19 gitk: Add user preference to hide specific references
ps-141 by ilyagr on 2025-08-03T05:40:15Z

Patchset ps-140

gitk: Add user preference to hide custom references

Ori Avtalion
2025-05-21T17:12:35Z
gitk
+18 -7
Back to top

gitk: Add user preference to hide custom references

External tools such as Jujutsu may add many references that are of no
interest to the user. This preference hides them.

The non-custom refs are those that pass git's default decoration filter
(see set_default_decoration_filter).

The preference is off by default, maintaining current behavior.

Signed-off-by: Ori Avtalion <ori@avtalion.name>
gitk link
+18 -7
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
diff --git a/gitk b/gitk
index 11ad639..8bc305a 100755
--- a/gitk
+++ b/gitk
@@ -1903,6 +1903,7 @@ proc readrefs {} {
     global otherrefids idotherrefs mainhead mainheadid
     global selecthead selectheadid
     global hideremotes
+    global hidecustomrefs
     global tclencoding
 
     foreach v {tagids idtags headids idheads otherrefids idotherrefs} {
@@ -1939,6 +1940,10 @@ proc readrefs {} {
             set tagids($name) $id
             lappend idtags($id) $name
         } else {
+            if {$hidecustomrefs} {
+                if {![string match "stash" $ref] ||
+                    ![string match "replace/*" $ref]} continue
+            }
             set otherrefids($name) $id
             lappend idotherrefs($id) $name
         }
@@ -11696,7 +11701,7 @@ proc prefspage_general {notebook} {
     global NS maxwidth maxgraphpct showneartags showlocalchanges
     global tabstop wrapcomment wrapdefault limitdiffs
     global autocopy autoselect autosellen extdifftool perfile_attrs
-    global hideremotes want_ttk have_ttk maxrefs web_browser
+    global hideremotes hidecustomrefs want_ttk have_ttk maxrefs web_browser
 
     set page [create_prefs_page $notebook.general]
 
@@ -11716,6 +11721,9 @@ proc prefspage_general {notebook} {
     ${NS}::checkbutton $page.hideremotes -text [mc "Hide remote refs"] \
         -variable hideremotes
     grid x $page.hideremotes -sticky w
+    ${NS}::checkbutton $page.hidecustomrefs -text [mc "Hide custom refs"] \
+        -variable hidecustomrefs
+    grid x $page.hidecustomrefs -sticky w
 
     ${NS}::checkbutton $page.autocopy -text [mc "Copy commit ID to clipboard"] \
         -variable autocopy
@@ -11863,7 +11871,7 @@ proc doprefs {} {
     global oldprefs prefstop showneartags showlocalchanges
     global uicolor bgcolor fgcolor ctext diffcolors selectbgcolor markbgcolor
     global tabstop limitdiffs autoselect autosellen extdifftool perfile_attrs
-    global hideremotes want_ttk have_ttk wrapcomment wrapdefault
+    global hideremotes hidecustomrefs want_ttk have_ttk wrapcomment wrapdefault
 
     set top .gitkprefs
     set prefstop $top
@@ -11872,7 +11880,8 @@ proc doprefs {} {
         return
     }
     foreach v {maxwidth maxgraphpct showneartags showlocalchanges \
-                   limitdiffs tabstop perfile_attrs hideremotes want_ttk wrapcomment wrapdefault} {
+                   limitdiffs tabstop perfile_attrs hideremotes hidecustomrefs \
+                   want_ttk wrapcomment wrapdefault} {
         set oldprefs($v) [set $v]
     }
     ttk_toplevel $top
@@ -11998,7 +12007,8 @@ proc prefscan {} {
     global oldprefs prefstop
 
     foreach v {maxwidth maxgraphpct showneartags showlocalchanges \
-                   limitdiffs tabstop perfile_attrs hideremotes want_ttk wrapcomment wrapdefault} {
+                   limitdiffs tabstop perfile_attrs hideremotes hidecustomrefs \
+                   want_ttk wrapcomment wrapdefault} {
         global $v
         set $v $oldprefs($v)
     }
@@ -12012,7 +12022,7 @@ proc prefsok {} {
     global oldprefs prefstop showneartags showlocalchanges
     global fontpref mainfont textfont uifont
     global limitdiffs treediffs perfile_attrs
-    global hideremotes wrapcomment wrapdefault
+    global hideremotes hidecustomrefs wrapcomment wrapdefault
     global ctext
 
     catch {destroy $prefstop}
@@ -12059,7 +12069,7 @@ proc prefsok {} {
           $limitdiffs != $oldprefs(limitdiffs)} {
         reselectline
     }
-    if {$hideremotes != $oldprefs(hideremotes)} {
+    if {$hideremotes != $oldprefs(hideremotes) || $hidecustomrefs != $oldprefs(hidecustomrefs)} {
         rereadrefs
     }
     if {$wrapcomment != $oldprefs(wrapcomment)} {
@@ -12539,6 +12549,7 @@ set wrapcomment "none"
 set wrapdefault "none"
 set showneartags 1
 set hideremotes 0
+set hidecustomrefs 0
 set maxrefs 20
 set visiblerefs {"master"}
 set maxlinelen 200
@@ -12645,7 +12656,7 @@ set config_variables {
     mainfont textfont uifont tabstop findmergefiles maxgraphpct maxwidth
     cmitmode wrapcomment wrapdefault autocopy autoselect autosellen
     showneartags maxrefs visiblerefs
-    hideremotes showlocalchanges datetimeformat limitdiffs uicolor want_ttk
+    hideremotes hidecustomrefs showlocalchanges datetimeformat limitdiffs uicolor want_ttk
     bgcolor fgcolor uifgcolor uifgdisabledcolor colors diffcolors mergecolors
     markbgcolor diffcontext selectbgcolor foundbgcolor currentsearchhitbgcolor
     extdifftool perfile_attrs headbgcolor headfgcolor headoutlinecolor