From: Junio C Hamano Date: Tue, 13 Feb 2007 00:07:29 +0000 (-0800) Subject: Merge branch 'master' of git://repo.or.cz/git-gui X-Git-Tag: v1.5.0~18 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=67c7575947b06a2a9bbdb355357895149bdbd8e5;p=git.git Merge branch 'master' of git://repo.or.cz/git-gui * 'master' of git://repo.or.cz/git-gui: git-gui: Change base version to 0.6. git-gui: Guess our version accurately as a subproject. git-gui: Handle gitgui tags in version gen. git-gui: Generate a version file on demand. git-gui: Rename GIT_VERSION to GITGUI_VERSION. git-gui: Allow gitexecdir, INSTALL to be set by the caller. --- 67c7575947b06a2a9bbdb355357895149bdbd8e5 diff --cc git-gui/GIT-VERSION-GEN index 79f1c527f,000000000..8fac8cb41 mode 100755,000000..100755 --- a/git-gui/GIT-VERSION-GEN +++ b/git-gui/GIT-VERSION-GEN @@@ -1,46 -1,0 +1,77 @@@ +#!/bin/sh + +GVF=GIT-VERSION-FILE - DEF_VER=v0.5.GIT ++DEF_VER=0.6.GITGUI + +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) && ++tree_search () ++{ ++ head=$1 ++ tree=$2 ++ for p in $(git rev-list --parents --max-count=1 $head 2>/devnull) ++ do ++ test $tree = $(git rev-parse $p^{tree} 2>/dev/null) && ++ vn=$(git describe --abbrev=4 $p 2>/dev/null) && ++ case "$vn" in ++ gitgui-[0-9]*) echo $vn; break;; ++ esac ++ done ++} ++ ++# We may be a subproject, so try looking for the merge ++# commit that supplied this directory content if we are ++# not at the toplevel. We probably will always be the ++# second parent in the commit, but we shouldn't rely on ++# that fact. ++# ++# If we are at the toplevel or the merge assumption fails ++# try looking for a gitgui-* tag, or fallback onto the ++# distributed version file. ++ ++if prefix="$(git rev-parse --show-prefix 2>/dev/null)" ++ test -n "$prefix" && ++ head=$(git rev-list --max-count=1 HEAD -- . 2>/dev/null) && ++ tree=$(git rev-parse --verify "HEAD:$prefix" 2>/dev/null) && ++ VN=$(tree_search $head $tree) + case "$VN" in - *$LF*) (exit 1) ;; - v[0-9]*) : happy ;; ++ gitgui-[0-9]*) : happy ;; ++ *) (exit 1) ;; + esac +then - VN=$(echo "$VN" | sed -e 's/-/./g'); ++ VN=$(echo "$VN" | sed -e 's/^gitgui-//;s/-/./g'); ++elif VN=$(git describe --abbrev=4 HEAD 2>/dev/null) && ++ case "$VN" in ++ gitgui-[0-9]*) : happy ;; ++ *) (exit 1) ;; ++ esac ++then ++ VN=$(echo "$VN" | sed -e 's/^gitgui-//;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) ++ VC=$(sed -e 's/^GITGUI_VERSION = //' <$GVF) +else + VC=unset +fi +test "$VN" = "$VC" || { - echo >&2 "GIT_VERSION = $VN" - echo "GIT_VERSION = $VN" >$GVF ++ echo >&2 "GITGUI_VERSION = $VN" ++ echo "GITGUI_VERSION = $VN" >$GVF +} + + diff --cc git-gui/Makefile index 8fade6912,000000000..fd82d9d16 mode 100644,000000..100644 --- a/git-gui/Makefile +++ b/git-gui/Makefile @@@ -1,48 -1,0 +1,56 @@@ +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)) + +ifndef SHELL_PATH + SHELL_PATH = /bin/sh +endif + - gitexecdir := $(shell git --exec-path) - INSTALL = install ++ifndef gitexecdir ++ gitexecdir := $(shell git --exec-path) ++endif ++ ++ifndef INSTALL ++ INSTALL = install ++endif + +DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) +gitexecdir_SQ = $(subst ','\'',$(gitexecdir)) - +SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) + +$(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh + rm -f $@ $@+ + sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ - -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ ++ -e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \ + $@.sh >$@+ + chmod +x $@+ + mv $@+ $@ + +$(GITGUI_BUILT_INS): git-gui + rm -f $@ && ln git-gui $@ + - # These can record GIT_VERSION ++# These can record GITGUI_VERSION +$(patsubst %.sh,%,$(SCRIPT_SH)): GIT-VERSION-FILE + +all:: $(ALL_PROGRAMS) + +install: all + $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(gitexecdir_SQ)' + $(INSTALL) git-gui '$(DESTDIR_SQ)$(gitexecdir_SQ)' + $(foreach p,$(GITGUI_BUILT_INS), rm -f '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln '$(DESTDIR_SQ)$(gitexecdir_SQ)/git-gui' '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;) + ++dist-version: ++ @mkdir -p $(TARDIR) ++ @echo $(GITGUI_VERSION) > $(TARDIR)/version ++ +clean:: + rm -f $(ALL_PROGRAMS) GIT-VERSION-FILE + - .PHONY: all install clean ++.PHONY: all install dist-version clean +.PHONY: .FORCE-GIT-VERSION-FILE