From: Junio C Hamano Date: Sun, 25 Feb 2007 07:33:12 +0000 (-0800) Subject: Merge git://repo.or.cz/git-gui into maint X-Git-Tag: v1.5.0.2~9 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=cef19c7af5202c547abe4c8a538ac7b9a4970f0e;p=git.git Merge git://repo.or.cz/git-gui into maint * git://repo.or.cz/git-gui: Don't modify CREDITS-FILE if it hasn't changed. --- cef19c7af5202c547abe4c8a538ac7b9a4970f0e diff --cc git-gui/CREDITS-GEN index da2c07629,000000000..d1b0f8635 mode 100755,000000..100755 --- a/git-gui/CREDITS-GEN +++ b/git-gui/CREDITS-GEN @@@ -1,58 -1,0 +1,71 @@@ +#!/bin/sh + +CF=CREDITS-FILE +tip= + +tree_search () +{ + head=$1 + tree=$2 + for p in $(git rev-list --parents --max-count=1 $head 2>/dev/null) + 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 $p; break;; + esac + done +} + +generate_credits () +{ + tip=$1 && - rm -f $CF && - git shortlog -n -s $tip | sed 's/: .*$//' >$CF || exit ++ rm -f "$2" && ++ git shortlog -n -s $tip | sed 's/: .*$//' >"$2" || exit +} + +# Always use the tarball credits file if found, just +# in case we are somehow contained in a larger git +# repository that doesn't actually track our state. +# (At least one package manager is doing this.) +# +# 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. +# + ++credits_tmp=/var/tmp/gitgui-credits-$$ ++trap 'rm -f "$credits_tmp"' 0 ++ ++orig="$credits_tmp" ++ +if test -f credits +then - rm -f $CF && - cp credits $CF || exit ++ orig=credits +elif 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) && + tip=$(tree_search $head $tree) && + test -n "$tip" +then - generate_credits $tip || exit ++ generate_credits $tip "$orig" || exit +elif tip="$(git rev-parse --verify HEAD 2>/dev/null)" && + test -n "$tip" +then - generate_credits $tip || exit ++ generate_credits $tip "$orig" || exit +else + echo "error: Cannot locate authorship information." >&2 + exit 1 +fi ++ ++if test -f "$orig" && cmp -s "$orig" "$CF" ++then ++ : noop ++else ++ rm -f "$CF" && ++ cat "$orig" >"$CF" ++fi ++