52 lines
1.2 KiB
Bash
Executable File
52 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
#
|
|
# blackbox_whatsnew - show what has changed in the last commit for a given file
|
|
#
|
|
exec blackbox whatsnew "$@"
|
|
exit 0
|
|
|
|
set -e
|
|
source "${0%/*}/_blackbox_common.sh"
|
|
|
|
if [[ $# -ne 1 ]]
|
|
then
|
|
echo "Pass only 1 file at a time"
|
|
exit 1
|
|
fi
|
|
|
|
fail_if_not_in_repo
|
|
gpg_agent_notice
|
|
|
|
COLUMNS=`tput cols`
|
|
FILE=$1
|
|
GIT="git log --abbrev-commit --pretty=oneline"
|
|
CURR_COMMIT=`$GIT $FILE | head -1 | awk '{print $1}'`
|
|
PREV_COMMIT=`$GIT ${CURR_COMMIT}~1 $FILE | head -1 | awk '{print $1}'`
|
|
# Use colordiff if available
|
|
if which colordiff > /dev/null 2>&1
|
|
then DIFF="colordiff"
|
|
else DIFF="diff"
|
|
fi
|
|
|
|
cat_commit()
|
|
{
|
|
COMMIT=$1
|
|
git checkout $COMMIT $FILE
|
|
echo "[$COMMIT] $FILE"
|
|
echo "---------------------"
|
|
"${BLACKBOX_HOME}/blackbox_cat" $FILE | sed '/========== PLAINFILE/,/========== EXTRACTING/d'
|
|
}
|
|
|
|
CURR_CONTENT=`cat_commit $CURR_COMMIT`
|
|
PREV_CONTENT=`cat_commit $PREV_COMMIT`
|
|
clear
|
|
|
|
# For some unknown reason this command executes fine but return exit code 1
|
|
$DIFF -y --width $COLUMNS \
|
|
<(echo "CURRENT" "$CURR_CONTENT" | fold -w $(( $COLUMNS / 2 - 4 )) ) \
|
|
<(echo "PREVIOUS" "$PREV_CONTENT" | fold -w $(( $COLUMNS / 2 - 4 )) )
|
|
|
|
git checkout $CURR_COMMIT $FILE
|
|
echo
|