mirror of
https://github.com/Fakerr/git-recall.git
synced 2026-09-11 07:56:42 -04:00
Compare commits
No commits in common. "master" and "v1.2.0" have entirely different histories.
|
|
@ -16,22 +16,16 @@ check what you or other contributors in your team did. It doesn't aim to be a re
|
|||
```sh
|
||||
$ git recall [-a <author name>]
|
||||
[-d <days-ago>]
|
||||
[-b <branch name>]
|
||||
[-p <paths>]
|
||||
[-f]
|
||||
[-h]
|
||||
[-v]
|
||||
```
|
||||
|
||||
##### Options description:
|
||||
|
||||
- `-a` - Restrict search for a specific user (use -a "all" for all users)
|
||||
- `-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
|
||||
- `-h` - Show help screen
|
||||
- `-v` - Show version
|
||||
|
||||
##### 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
|
||||
(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
|
||||
Use `npm` to install the project.
|
||||
|
|
|
|||
51
git-recall
51
git-recall
|
|
@ -1,15 +1,14 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
|
||||
|
||||
# usage info
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: git recall [options]
|
||||
Options:
|
||||
-d, --date Show logs for last n days.
|
||||
-a, --author Author name (use -a "all" for all users).
|
||||
-b, --branch Specify branch to display commits from.
|
||||
-p --path Specify path or filename to display commits from.
|
||||
-a, --author Author name.
|
||||
-f, --fetch fetch commits.
|
||||
-h, --help This message.
|
||||
-v, --version Show version.
|
||||
|
|
@ -18,7 +17,6 @@ EOF
|
|||
}
|
||||
|
||||
# Global variables
|
||||
orig_stty=$(stty -g) # Store original terminal settings
|
||||
AUTHOR=""
|
||||
FETCH=false
|
||||
GIT_FORMAT=""
|
||||
|
|
@ -28,9 +26,7 @@ SINCE="1 days ago" # show logs for last day by default
|
|||
COMMITS_UNCOL=() # commits without colors
|
||||
SED_CMD="" # Sed command to use according OS.
|
||||
LESSKEY=false
|
||||
VERSION="1.2.4"
|
||||
BRANCH=""
|
||||
SEARCH_PATH=""
|
||||
VERSION="1.2.0"
|
||||
|
||||
# Set key bindings.
|
||||
au="`echo -e '\e[A'`" # arrow up
|
||||
|
|
@ -91,14 +87,6 @@ while [[ "$1" =~ ^- && ! "$1" == "--" ]]; do
|
|||
usage
|
||||
exit
|
||||
;;
|
||||
-b | --branch )
|
||||
BRANCH="$2"
|
||||
shift
|
||||
;;
|
||||
-p | --path )
|
||||
SEARCH_PATH="$2"
|
||||
shift
|
||||
;;
|
||||
* )
|
||||
echo "abort: unknown argument" 1>&2
|
||||
exit 1
|
||||
|
|
@ -140,7 +128,7 @@ GIT_FORMAT="%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%a
|
|||
# Log command.
|
||||
GIT_LOG="git log --pretty=format:'${GIT_FORMAT}'
|
||||
--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.
|
||||
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)
|
||||
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
|
||||
|
||||
# Get commit's diff.
|
||||
function get_diff() {
|
||||
ELT="$(echo "${COMMITS_UNCOL[$CP-1]}")"
|
||||
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)
|
||||
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.
|
||||
|
|
@ -209,13 +197,11 @@ function get_diff() {
|
|||
function print_diff() {
|
||||
get_diff
|
||||
if [[ $(( TN + DIFF_LINES_NUMBER + OFFSET )) -ge $(( `tput lines` - 1 )) ]]; then
|
||||
trap - INT
|
||||
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
|
||||
echo "$DIFF" | less -r
|
||||
fi
|
||||
trap cleanup_and_exit INT
|
||||
clear_screen
|
||||
else
|
||||
stop=false
|
||||
|
|
@ -242,6 +228,7 @@ function print_diff() {
|
|||
esac
|
||||
done
|
||||
[[ $END = false ]] && tput cuu $(( TN + DIFF_LINES_NUMBER + OFFSET )) && clear_screen
|
||||
[[ $END = true ]] && tput cuu 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
@ -261,21 +248,6 @@ function calculate_offset {
|
|||
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
|
||||
|
||||
tput civis # hide cursor.
|
||||
|
|
@ -346,13 +318,18 @@ do
|
|||
"q")
|
||||
si=false
|
||||
END=true
|
||||
tput cuu 1 #move cursor up one line. (remove extra line)
|
||||
;;
|
||||
* )
|
||||
tput cuu $(( TN + OFFSET_2 ))
|
||||
esac
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "git-recall",
|
||||
"version": "1.2.4",
|
||||
"version": "1.2.0",
|
||||
"description": "Simple and convenient Git tool to easily recall what you've done",
|
||||
"main": "",
|
||||
"scripts": {
|
||||
|
|
|
|||
Loading…
Reference in a new issue