зеркало из https://github.com/microsoft/git.git
git-gui: Ensure version number is always current.
I'm stealing the exact logic used by core Git within its own Makefile to setup the version number within scripts and executables. This way we can be sure that the version number is always updated after a commit, and that the version number also reflects when it is coming from a dirty working directory (and is thus pretty worthless). I've cleaned up some of the version display code in the about dialog too. There were simply too many blank lines in the bottom section where we showed the version data. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Родитель
0499b24ad6
Коммит
f1cee4e6d1
|
@ -1,2 +1,3 @@
|
|||
GIT-VERSION-FILE
|
||||
git-citool
|
||||
git-gui
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
#!/bin/sh
|
||||
|
||||
GVF=GIT-VERSION-FILE
|
||||
DEF_VER=v0.5.GIT
|
||||
|
||||
LF='
|
||||
'
|
||||
|
||||
# First try git-describe, then see if there is a version file
|
||||
# (included in release tarballs), then default
|
||||
if VN=$(git describe --abbrev=4 HEAD 2>/dev/null) &&
|
||||
case "$VN" in
|
||||
*$LF*) (exit 1) ;;
|
||||
v[0-9]*) : happy ;;
|
||||
esac
|
||||
then
|
||||
VN=$(echo "$VN" | sed -e 's/-/./g');
|
||||
elif test -f version
|
||||
then
|
||||
VN=$(cat version) || VN="$DEF_VER"
|
||||
else
|
||||
VN="$DEF_VER"
|
||||
fi
|
||||
|
||||
VN=$(expr "$VN" : v*'\(.*\)')
|
||||
|
||||
dirty=$(sh -c 'git diff-index --name-only HEAD' 2>/dev/null) || dirty=
|
||||
case "$dirty" in
|
||||
'')
|
||||
;;
|
||||
*)
|
||||
VN="$VN-dirty" ;;
|
||||
esac
|
||||
|
||||
if test -r $GVF
|
||||
then
|
||||
VC=$(sed -e 's/^GIT_VERSION = //' <$GVF)
|
||||
else
|
||||
VC=unset
|
||||
fi
|
||||
test "$VN" = "$VC" || {
|
||||
echo >&2 "GIT_VERSION = $VN"
|
||||
echo "GIT_VERSION = $VN" >$GVF
|
||||
}
|
||||
|
||||
|
15
Makefile
15
Makefile
|
@ -1,9 +1,12 @@
|
|||
all::
|
||||
|
||||
GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
|
||||
@$(SHELL_PATH) ./GIT-VERSION-GEN
|
||||
-include GIT-VERSION-FILE
|
||||
|
||||
SCRIPT_SH = git-gui.sh
|
||||
GITGUI_BUILT_INS = git-citool
|
||||
ALL_PROGRAMS = $(GITGUI_BUILT_INS) $(patsubst %.sh,%,$(SCRIPT_SH))
|
||||
GITGUI_VERSION := $(shell git describe)
|
||||
|
||||
ifndef SHELL_PATH
|
||||
SHELL_PATH = /bin/sh
|
||||
|
@ -20,7 +23,7 @@ SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
|
|||
$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
|
||||
rm -f $@ $@+
|
||||
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
|
||||
-e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
|
||||
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
|
||||
$@.sh >$@+
|
||||
chmod +x $@+
|
||||
mv $@+ $@
|
||||
|
@ -28,6 +31,9 @@ $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh
|
|||
$(GITGUI_BUILT_INS): git-gui
|
||||
rm -f $@ && ln git-gui $@
|
||||
|
||||
# These can record GIT_VERSION
|
||||
$(patsubst %.sh,%,$(SCRIPT_SH)): GIT-VERSION-FILE
|
||||
|
||||
all:: $(ALL_PROGRAMS)
|
||||
|
||||
install: all
|
||||
|
@ -36,4 +42,7 @@ install: all
|
|||
$(foreach p,$(GITGUI_BUILT_INS), rm -f '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln '$(DESTDIR_SQ)$(gitexecdir_SQ)/git-gui' '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;)
|
||||
|
||||
clean::
|
||||
rm -f $(ALL_PROGRAMS)
|
||||
rm -f $(ALL_PROGRAMS) GIT-VERSION-FILE
|
||||
|
||||
.PHONY: all install clean
|
||||
.PHONY: .FORCE-GIT-VERSION-FILE
|
||||
|
|
|
@ -19,7 +19,7 @@ You should have received a copy of the GNU General Public License
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA}
|
||||
|
||||
set appvers {@@GITGUI_VERSION@@}
|
||||
set appvers {@@GIT_VERSION@@}
|
||||
set appname [lindex [file split $argv0] end]
|
||||
set gitdir {}
|
||||
|
||||
|
@ -2543,8 +2543,9 @@ $copyright" \
|
|||
pack $w.desc -side top -fill x -padx 5 -pady 5
|
||||
|
||||
set v {}
|
||||
append v "$appname version $appvers\n\n"
|
||||
append v "[exec git --version]\n\n"
|
||||
append v "$appname version $appvers\n"
|
||||
append v "[exec git version]\n"
|
||||
append v "\n"
|
||||
if {$tcl_patchLevel eq $tk_patchLevel} {
|
||||
append v "Tcl/Tk version $tcl_patchLevel"
|
||||
} else {
|
||||
|
|
Загрузка…
Ссылка в новой задаче