diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2008-12-20 13:05:33 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-12-21 02:47:22 -0800 |
commit | 055a5975258f37eecdfcf609a472ab4957a59263 (patch) | |
tree | cbd4059e425063ddaeb8272b0f61f901c0ddf02b /git-notes.sh | |
parent | 879ef2485d6ced20845ca626ecb45a9b65aa3a70 (diff) | |
download | git-055a5975258f37eecdfcf609a472ab4957a59263.tar.gz git-055a5975258f37eecdfcf609a472ab4957a59263.tar.xz |
Add a script to edit/inspect notes
The script 'git notes' allows you to edit and show commit notes, by
calling either
git notes show <commit>
or
git notes edit <commit>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-notes.sh')
-rwxr-xr-x | git-notes.sh | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/git-notes.sh b/git-notes.sh new file mode 100755 index 000000000..bfdbaa852 --- /dev/null +++ b/git-notes.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +USAGE="(edit | show) [commit]" +. git-sh-setup + +test -n "$3" && usage + +test -z "$1" && usage +ACTION="$1"; shift + +test -z "$GIT_NOTES_REF" && GIT_NOTES_REF="$(git config core.notesref)" +test -z "$GIT_NOTES_REF" && GIT_NOTES_REF="refs/notes/commits" + +COMMIT=$(git rev-parse --verify --default HEAD "$@") || +die "Invalid commit: $@" + +MESSAGE="$GIT_DIR"/new-notes-$COMMIT +trap ' + test -f "$MESSAGE" && rm "$MESSAGE" +' 0 + +case "$ACTION" in +edit) + GIT_NOTES_REF= git log -1 $COMMIT | sed "s/^/#/" > "$MESSAGE" + + GIT_INDEX_FILE="$MESSAGE".idx + export GIT_INDEX_FILE + + CURRENT_HEAD=$(git show-ref "$GIT_NOTES_REF" | cut -f 1 -d ' ') + if [ -z "$CURRENT_HEAD" ]; then + PARENT= + else + PARENT="-p $CURRENT_HEAD" + git read-tree "$GIT_NOTES_REF" || die "Could not read index" + git cat-file blob :$COMMIT >> "$MESSAGE" 2> /dev/null + fi + + ${VISUAL:-${EDITOR:-vi}} "$MESSAGE" + + grep -v ^# < "$MESSAGE" | git stripspace > "$MESSAGE".processed + mv "$MESSAGE".processed "$MESSAGE" + if [ -s "$MESSAGE" ]; then + BLOB=$(git hash-object -w "$MESSAGE") || + die "Could not write into object database" + git update-index --add --cacheinfo 0644 $BLOB $COMMIT || + die "Could not write index" + else + test -z "$CURRENT_HEAD" && + die "Will not initialise with empty tree" + git update-index --force-remove $COMMIT || + die "Could not update index" + fi + + TREE=$(git write-tree) || die "Could not write tree" + NEW_HEAD=$(echo Annotate $COMMIT | git commit-tree $TREE $PARENT) || + die "Could not annotate" + git update-ref -m "Annotate $COMMIT" \ + "$GIT_NOTES_REF" $NEW_HEAD $CURRENT_HEAD +;; +show) + git show "$GIT_NOTES_REF":$COMMIT +;; +*) + usage +esac |