aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Sixt <j6t@kdbg.org>2026-02-18 13:02:20 +0100
committerJohannes Sixt <j6t@kdbg.org>2026-02-18 13:02:20 +0100
commit8d55f6ec2547c307b149a5c345bd25100199ec2a (patch)
treef5da6fcd07d50b7e84f6585f4c2f276d7c44c975
parentd5139f34cec36864be90a7add024f1156af31c0f (diff)
parent65d3a128842c4eedf4c91828061d948df1ae14f2 (diff)
downloadgit-8d55f6ec2547c307b149a5c345bd25100199ec2a.tar.xz
Merge branch 'pks-meson-fixes' of github.com:pks-gitlab/git-gui
* 'pks-meson-fixes' of github.com:pks-gitlab/git-gui: git-gui: wire up "git-gui--askyesno" with Meson git-gui: massage "git-gui--askyesno" with "generate-script.sh" git-gui: prefer shell at "/bin/sh" with Meson git-gui: fix use of GIT_CEILING_DIRECTORIES Signed-off-by: Johannes Sixt <j6t@kdbg.org>
-rw-r--r--.gitignore1
-rwxr-xr-xGIT-VERSION-GEN16
-rw-r--r--Makefile9
-rwxr-xr-xgit-gui--askyesno.sh (renamed from git-gui--askyesno)0
-rw-r--r--meson.build31
-rw-r--r--meson_options.txt2
6 files changed, 38 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore
index 5130b4f018..38a41ebc58 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,5 @@ GIT-GUI-BUILD-OPTIONS
GIT-VERSION-FILE
git-gui
git-gui--askpass
+git-gui--askyesno
lib/tclIndex
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index c2767b4136..2f729de4bb 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -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 ()
diff --git a/Makefile b/Makefile
index 69b0b84435..ca01068810 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/git-gui--askyesno b/git-gui--askyesno.sh
index 142d1bc3de..142d1bc3de 100755
--- a/git-gui--askyesno
+++ b/git-gui--askyesno.sh
diff --git a/meson.build b/meson.build
index 320ba09ecf..a8119aa29f 100644
--- a/meson.build
+++ b/meson.build
@@ -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',
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000000..7591a34218
--- /dev/null
+++ b/meson_options.txt
@@ -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.')