Compare commits

..

No commits in common. "master" and "v1.2.0" have entirely different histories.

3 changed files with 15 additions and 45 deletions

View file

@ -16,22 +16,16 @@ check what you or other contributors in your team did. It doesn't aim to be a re
```sh ```sh
$ git recall [-a <author name>] $ git recall [-a <author name>]
[-d <days-ago>] [-d <days-ago>]
[-b <branch name>]
[-p <paths>]
[-f] [-f]
[-h] [-h]
[-v]
``` ```
##### Options description: ##### Options description:
- `-a` - Restrict search for a specific user (use -a "all" for all users) - `-a` - Restrict search for a specific user (use -a "all" for all users)
- `-d` - Display commits for the last n days - `-d` - Display commits for the last n days
- `-b` - Specify branch to display commits from
- `-p` - Specify path/s or file/s to display commits from
- `-f` - Fetch the latest changes - `-f` - Fetch the latest changes
- `-h` - Show help screen - `-h` - Show help screen
- `-v` - Show version
##### How to use: ##### How to use:
@ -74,7 +68,6 @@ $ git recall -f
You can install it by simply copying the `git-recall` script into any existing path You can install it by simply copying the `git-recall` script into any existing path
(e.g. `/usr/local/bin`) or create your own directory and add it to the `PATH` variable. (e.g. `/usr/local/bin`) or create your own directory and add it to the `PATH` variable.
Make sure to run `chmod +x /usr/local/bin/git-recall` or the directory in which you copied it to.
##### Using NPM ##### Using NPM
Use `npm` to install the project. Use `npm` to install the project.

View file

@ -1,15 +1,14 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# usage info # usage info
usage() { usage() {
cat <<EOF cat <<EOF
Usage: git recall [options] Usage: git recall [options]
Options: Options:
-d, --date Show logs for last n days. -d, --date Show logs for last n days.
-a, --author Author name (use -a "all" for all users). -a, --author Author name.
-b, --branch Specify branch to display commits from.
-p --path Specify path or filename to display commits from.
-f, --fetch fetch commits. -f, --fetch fetch commits.
-h, --help This message. -h, --help This message.
-v, --version Show version. -v, --version Show version.
@ -18,7 +17,6 @@ EOF
} }
# Global variables # Global variables
orig_stty=$(stty -g) # Store original terminal settings
AUTHOR="" AUTHOR=""
FETCH=false FETCH=false
GIT_FORMAT="" GIT_FORMAT=""
@ -28,9 +26,7 @@ SINCE="1 days ago" # show logs for last day by default
COMMITS_UNCOL=() # commits without colors COMMITS_UNCOL=() # commits without colors
SED_CMD="" # Sed command to use according OS. SED_CMD="" # Sed command to use according OS.
LESSKEY=false LESSKEY=false
VERSION="1.2.4" VERSION="1.2.0"
BRANCH=""
SEARCH_PATH=""
# Set key bindings. # Set key bindings.
au="`echo -e '\e[A'`" # arrow up au="`echo -e '\e[A'`" # arrow up
@ -91,14 +87,6 @@ while [[ "$1" =~ ^- && ! "$1" == "--" ]]; do
usage usage
exit exit
;; ;;
-b | --branch )
BRANCH="$2"
shift
;;
-p | --path )
SEARCH_PATH="$2"
shift
;;
* ) * )
echo "abort: unknown argument" 1>&2 echo "abort: unknown argument" 1>&2
exit 1 exit 1
@ -140,7 +128,7 @@ GIT_FORMAT="%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%a
# Log command. # Log command.
GIT_LOG="git log --pretty=format:'${GIT_FORMAT}' GIT_LOG="git log --pretty=format:'${GIT_FORMAT}'
--author \"$AUTHOR\" --author \"$AUTHOR\"
--since \"$SINCE\" --abbrev-commit --no-merges $BRANCH $SEARCH_PATH" --since \"$SINCE\" --abbrev-commit"
# Change temporary the IFS to store GIT_LOG's output into an array. # Change temporary the IFS to store GIT_LOG's output into an array.
IFS=$'\n' IFS=$'\n'
@ -190,14 +178,14 @@ done
# Create a temporary lesskey file to change the keybindings so the user can use the TAB key to quit less. (more convenient) # Create a temporary lesskey file to change the keybindings so the user can use the TAB key to quit less. (more convenient)
if [[ $LESSKEY = true ]]; then if [[ $LESSKEY = true ]]; then
echo "\t quit" | lesskey -o /tmp/lsh_less_keys_tmp -- - &> /dev/null echo "\t quit" | lesskey -o $HOME/.lsh_less_keys_tmp -- - &> /dev/null
fi fi
# Get commit's diff. # Get commit's diff.
function get_diff() { function get_diff() {
ELT="$(echo "${COMMITS_UNCOL[$CP-1]}")" ELT="$(echo "${COMMITS_UNCOL[$CP-1]}")"
DIFF_TIP=${ELT:0:7} DIFF_TIP=${ELT:0:7}
DIFF_CMD="git show $DIFF_TIP --color=always $SEARCH_PATH" DIFF_CMD="git show $DIFF_TIP --color=always"
DIFF=$(eval ${DIFF_CMD} 2>/dev/null) DIFF=$(eval ${DIFF_CMD} 2>/dev/null)
tmp_diff="$(echo "$DIFF" | $SED_CMD)" tmp_diff="$(echo "$DIFF" | $SED_CMD)"
off=$(echo "$tmp_diff" | grep -c ".\{$CN\}") # Number of lines in the diff that are longer than terminal width. off=$(echo "$tmp_diff" | grep -c ".\{$CN\}") # Number of lines in the diff that are longer than terminal width.
@ -209,13 +197,11 @@ function get_diff() {
function print_diff() { function print_diff() {
get_diff get_diff
if [[ $(( TN + DIFF_LINES_NUMBER + OFFSET )) -ge $(( `tput lines` - 1 )) ]]; then if [[ $(( TN + DIFF_LINES_NUMBER + OFFSET )) -ge $(( `tput lines` - 1 )) ]]; then
trap - INT
if [[ $LESSKEY = true ]]; then if [[ $LESSKEY = true ]]; then
echo "$DIFF" | less -r -k /tmp/lsh_less_keys_tmp echo "$DIFF" | less -r -k $HOME/.lsh_less_keys_tmp
else else
echo "$DIFF" | less -r echo "$DIFF" | less -r
fi fi
trap cleanup_and_exit INT
clear_screen clear_screen
else else
stop=false stop=false
@ -242,6 +228,7 @@ function print_diff() {
esac esac
done done
[[ $END = false ]] && tput cuu $(( TN + DIFF_LINES_NUMBER + OFFSET )) && clear_screen [[ $END = false ]] && tput cuu $(( TN + DIFF_LINES_NUMBER + OFFSET )) && clear_screen
[[ $END = true ]] && tput cuu 1
fi fi
} }
@ -261,21 +248,6 @@ function calculate_offset {
done done
} }
# Reset changes made by this script before exiting
function cleanup_and_exit() {
# remove temporary less keybindings
[[ $LESSKEY = true ]] && rm /tmp/lsh_less_keys_tmp
tput cuu 1 # move cursor up one line. (remove extra line)
tput cnorm # unhide cursor
echo "$NORMAL" # normal colors
stty "$orig_stty" > /dev/null 2>&1
exit
}
# Catch a control-C interrupt and perform cleanup operations before exiting
trap cleanup_and_exit INT
{ # capture stdout to stderr { # capture stdout to stderr
tput civis # hide cursor. tput civis # hide cursor.
@ -346,13 +318,18 @@ do
"q") "q")
si=false si=false
END=true END=true
tput cuu 1 #move cursor up one line. (remove extra line)
;; ;;
* ) * )
tput cuu $(( TN + OFFSET_2 )) tput cuu $(( TN + OFFSET_2 ))
esac esac
done done
cleanup_and_exit # remove temporary less keybindings
[[ $LESSKEY = true ]] && rm $HOME/.lsh_less_keys_tmp
tput cnorm # unhide cursor
echo "$NORMAL" # normal colors
} >&2 # END capture } >&2 # END capture

View file

@ -1,6 +1,6 @@
{ {
"name": "git-recall", "name": "git-recall",
"version": "1.2.4", "version": "1.2.0",
"description": "Simple and convenient Git tool to easily recall what you've done", "description": "Simple and convenient Git tool to easily recall what you've done",
"main": "", "main": "",
"scripts": { "scripts": {