Sync with 'master'

next
Junio C Hamano 2026-03-21 09:43:42 -07:00
commit aef5881109
27 changed files with 245 additions and 4530 deletions

1
git-gui/.gitignore vendored
View File

@ -5,4 +5,5 @@ GIT-GUI-BUILD-OPTIONS
GIT-VERSION-FILE
git-gui
git-gui--askpass
git-gui--askyesno
lib/tclIndex

View File

@ -5,19 +5,27 @@ DEF_VER=0.21.GITGUI
LF='
'

if test "$#" -ne 2
if test "$#" -lt 2
then
echo >&2 "usage: $0 <SOURCE_DIR> <OUTPUT>"
echo >&2 "usage: $0 <SOURCE_DIR> <OUTPUT> [<PARENT_PROJECT_DIR>]"
exit 1
fi

SOURCE_DIR="$1"
OUTPUT="$2"
PARENT_PROJECT_DIR="$3"

# Protect us from reading Git version information outside of the Git directory
# in case it is not a repository itself, but embedded in an unrelated
# repository.
GIT_CEILING_DIRECTORIES="$SOURCE_DIR/.."
# repository. The PARENT_PROJECT_DIR variable can be used to override this, for
# example when git-gui is included as a subproject.
if test -n "$PARENT_PROJECT_DIR"
then
GIT_CEILING_DIRECTORIES="$PARENT_PROJECT_DIR/.."
else
GIT_CEILING_DIRECTORIES="$SOURCE_DIR/.."
fi

export GIT_CEILING_DIRECTORIES

tree_search ()

View File

@ -9,7 +9,7 @@ all::
#

GIT-VERSION-FILE: FORCE
@$(SHELL_PATH) ./GIT-VERSION-GEN . $@
@$(SHELL_PATH) ./GIT-VERSION-GEN . $@ "$(PARENT_PROJECT_DIR)"

uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
@ -177,10 +177,13 @@ GIT-GUI-BUILD-OPTIONS: FORCE
git-gui--askpass: git-gui--askpass.sh GIT-GUI-BUILD-OPTIONS generate-script.sh
$(QUIET_GEN)$(SHELL_PATH) generate-script.sh $@ $< ./GIT-GUI-BUILD-OPTIONS

git-gui--askyesno: git-gui--askyesno.sh GIT-GUI-BUILD-OPTIONS generate-script.sh
$(QUIET_GEN)$(SHELL_PATH) generate-script.sh $@ $< ./GIT-GUI-BUILD-OPTIONS

ifdef GITGUI_WINDOWS_WRAPPER
all:: git-gui
endif
all:: $(GITGUI_MAIN) git-gui--askpass lib/tclIndex $(ALL_MSGFILES)
all:: $(GITGUI_MAIN) git-gui--askpass git-gui--askyesno lib/tclIndex $(ALL_MSGFILES)

install: all
$(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(gitexecdir_SQ)' $(INSTALL_D1)
@ -221,7 +224,7 @@ dist-version: GIT-VERSION-FILE
@sed 's|^GITGUI_VERSION=||' <GIT-VERSION-FILE >$(TARDIR)/version

clean::
$(RM_RF) $(GITGUI_MAIN) git-gui--askpass lib/tclIndex po/*.msg $(PO_TEMPLATE)
$(RM_RF) $(GITGUI_MAIN) git-gui--askpass git-gui--askyesno lib/tclIndex po/*.msg $(PO_TEMPLATE)
$(RM_RF) GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
ifdef GITGUI_WINDOWS_WRAPPER
$(RM_RF) git-gui

View File

@ -3900,6 +3900,24 @@ if {[winfo exists $ui_comm]} {

backup_commit_buffer

# Grey out comment lines (which are stripped from the final commit message by
# wash_commit_message).
$ui_comm tag configure commit_comment -foreground gray
proc dim_commit_comment_lines {} {
global ui_comm comment_string
$ui_comm tag remove commit_comment 1.0 end
set text [$ui_comm get 1.0 end]
# See also cmt_rx in wash_commit_message
set cmt_rx [strcat {^} [regsub -all {\W} $comment_string {\\&}]]
set ranges [regexp -all -indices -inline -line -- $cmt_rx $text]
foreach pair $ranges {
set idx "1.0 + [lindex $pair 0] chars"
$ui_comm tag add commit_comment $idx "$idx lineend + 1 char"
}
}
dim_commit_comment_lines
bind $ui_comm <<Modified>> { after idle dim_commit_comment_lines }

# -- If the user has aspell available we can drive it
# in pipe mode to spellcheck the commit message.
#

View File

@ -385,6 +385,8 @@ proc read_diff {fd conflict_size cont_info} {
#
if {[string match {@@@ *} $line]} {
set is_3way_diff 1
apply_tab_size 2
} elseif {[string match {@@ *} $line]} {
apply_tab_size 1
}


View File

@ -4,7 +4,7 @@ project('git-gui',

fs = import('fs')

shell = find_program('sh')
shell = find_program('/bin/sh', 'sh')
tclsh = find_program('tclsh')
wish = find_program('wish')

@ -34,6 +34,7 @@ version_file = custom_target(
'@INPUT@',
meson.current_source_dir(),
'@OUTPUT@',
get_option('parent_project_dir'),
],
build_always_stale: true,
)
@ -53,19 +54,21 @@ if target_machine.system() == 'windows'
)
endif

custom_target(
output: 'git-gui--askpass',
input: 'git-gui--askpass.sh',
command: [
shell,
meson.current_source_dir() / 'generate-script.sh',
'@OUTPUT@',
'@INPUT@',
meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS',
],
install: true,
install_dir: get_option('libexecdir') / 'git-core',
)
foreach script : [ 'git-gui--askpass', 'git-gui--askyesno' ]
custom_target(
output: script,
input: script + '.sh',
command: [
shell,
meson.current_source_dir() / 'generate-script.sh',
'@OUTPUT@',
'@INPUT@',
meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS',
],
install: true,
install_dir: get_option('libexecdir') / 'git-core',
)
endforeach

custom_target(
input: 'git-gui.sh',

View File

@ -0,0 +1,2 @@
option('parent_project_dir', type: 'string', value: '',
description: 'The directory of the parent project. This is used so that the version can be determined even in case git-gui is included as a subtree.')

1
gitk-git/.gitignore vendored
View File

@ -1,2 +1,3 @@
/GIT-TCLTK-VARS
/gitk-wish
po/gitk.pot

View File

@ -68,9 +68,12 @@ gitk-wish: gitk GIT-TCLTK-VARS
$(SHELL_PATH) ./generate-tcl.sh "$(TCLTK_PATH_SQ)" "$<" "$@"

$(PO_TEMPLATE): gitk
$(XGETTEXT) -kmc -LTcl -o $@ gitk
$(XGETTEXT) -kmc -LTcl --package-name=Gitk -o $@ gitk
update-po:: $(PO_TEMPLATE)
$(foreach p, $(ALL_POFILES), echo Updating $p ; msgmerge -U $p $(PO_TEMPLATE) ; )
$(foreach p, $(ALL_POFILES), echo Updating $p ; msgmerge -U --add-location $p $(PO_TEMPLATE) ; )
@echo "Before committing changes, ensure that a clean-filter is installed:"; \
echo; \
echo " git config filter.gettext-no-location.clean \"msgcat --no-location -\""
$(ALL_MSGFILES): %.msg : %.po
@echo Generating catalog $@
$(MSGFMT) --statistics --tcl -l $(basename $(notdir $<)) -d $(dir $@) $<

View File

@ -6831,16 +6831,18 @@ proc drawtags {id x xt y1} {
} else {
# draw a head or other ref
if {[incr nheads -1] >= 0} {
set col $headbgcolor
set refoutlinecol $headoutlinecolor
set reffillcol $headbgcolor
if {$tag eq $mainhead} {
set font mainfontbold
}
} else {
set col "#ddddff"
set refoutlinecol black
set reffillcol "#ddddff"
}
set xl [expr {$xl - $delta/2}]
$canv create polygon $x $yt $xr $yt $xr $yb $x $yb \
-width 1 -outline black -fill $col -tags tag.$id
-width 1 -outline $refoutlinecol -fill $reffillcol -tags tag.$id
if {[regexp {^(remotes/[^/]*/|remotes/)} $tag match remoteprefix]} {
set rwid [font measure mainfont $remoteprefix]
set xi [expr {$x + 1}]
@ -6850,7 +6852,8 @@ proc drawtags {id x xt y1} {
-width 0 -fill $remotebgcolor -tags tag.$id
}
}
set t [$canv create text $xl $y1 -anchor w -text $tag -fill $headfgcolor \
set textfgcolor [expr {$ntags >= 0 ? $tagfgcolor : $headfgcolor}]
set t [$canv create text $xl $y1 -anchor w -text $tag -fill $textfgcolor \
-font $font -tags [list tag.$id text]]
if {$ntags >= 0} {
$canv bind $t <1> $tagclick
@ -11796,7 +11799,7 @@ proc prefspage_general {notebook} {

proc prefspage_colors {notebook} {
global bgcolor fgcolor ctext diffcolors selectbgcolor markbgcolor
global diffbgcolors
global diffbgcolors linkfgcolor
global themeloader

set page [create_prefs_page $notebook.colors]
@ -11873,6 +11876,11 @@ proc prefspage_colors {notebook} {
-command [list choosecolor selectbgcolor {} $page [mc "background"]]
grid x $page.selbgbut $page.selbgsep -sticky w

label $page.linkfg -padx 40 -relief sunk -background $linkfgcolor
ttk::button $page.linkfgbut -text [mc "Link"] \
-command [list choosecolor linkfgcolor {} $page [mc "link"]]
grid x $page.linkfgbut $page.linkfg -sticky w

grid columnconfigure $page 2 -weight 1

return $page
@ -11880,7 +11888,7 @@ proc prefspage_colors {notebook} {

proc prefspage_set_colorswatches {page} {
global bgcolor fgcolor ctext diffcolors selectbgcolor markbgcolor
global diffbgcolors
global diffbgcolors linkfgcolor

$page.bg configure -background $bgcolor
$page.fg configure -background $fgcolor
@ -11891,6 +11899,7 @@ proc prefspage_set_colorswatches {page} {
$page.hunksep configure -background [lindex $diffcolors 2]
$page.markbgsep configure -background $markbgcolor
$page.selbgsep configure -background $selectbgcolor
$page.linkfg configure -background $linkfgcolor
}

proc prefspage_fonts {notebook} {

1
gitk-git/po/.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
/*.po filter=gettext-no-location

View File

@ -6,7 +6,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: gitk master\n"
"Project-Id-Version: Gitk master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-07-22 18:34+0200\n"
"PO-Revision-Date: 2025-07-28 13:38+0200\n"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff