diff options
author | Junio C Hamano <junkio@cox.net> | 2007-02-21 11:09:57 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-02-21 11:09:57 -0800 |
commit | 5bac4a671907604b5fb4e24ff682d5b0e8431931 (patch) | |
tree | cb67f08dbbad93eaaf61f749d25aa7cd882a2534 /git-gui/CREDITS-GEN | |
parent | c750da256a54f189de28d3deb054328d67f9b9be (diff) | |
parent | 981193786fc30b9ee73b9f223a75642b4ed455b9 (diff) | |
download | git-5bac4a671907604b5fb4e24ff682d5b0e8431931.tar.gz |
Merge branch 'master' of git://repo.or.cz/git-gui into maint
* 'master' of git://repo.or.cz/git-gui:
git-gui: Don't crash in citool mode on initial commit.
git-gui: Remove TODO list.
git-gui: Include browser in our usage message.
git-gui: Change summary of git-gui.
git-gui: Display all authors of git-gui.
git-gui: Use mixed path for docs on Cygwin.
git-gui: Correct crash when saving options in blame mode.
git-gui: Expose the browser as a subcommand.
git-gui: Create new branches from a tag.
git-gui: Prefer version file over git-describe.
git-gui: Print version on the console.
git-gui: More consistently display the application name.
git-gui: Permit merging tags into the current branch.
git-gui: Basic version check to ensure git 1.5.0 or later is used.
git-gui: Refactor 'exec git subcmd' idiom.
Diffstat (limited to 'git-gui/CREDITS-GEN')
-rwxr-xr-x | git-gui/CREDITS-GEN | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/git-gui/CREDITS-GEN b/git-gui/CREDITS-GEN new file mode 100755 index 0000000000..da2c07629e --- /dev/null +++ b/git-gui/CREDITS-GEN @@ -0,0 +1,58 @@ +#!/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 +} + +# 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. +# + +if test -f credits +then + rm -f $CF && + cp credits $CF || exit +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 +elif tip="$(git rev-parse --verify HEAD 2>/dev/null)" && + test -n "$tip" +then + generate_credits $tip || exit +else + echo "error: Cannot locate authorship information." >&2 + exit 1 +fi |