gitmenu for mc
This commit is contained in:
112
bin/gitmenu
Executable file
112
bin/gitmenu
Executable file
@@ -0,0 +1,112 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function usage {
|
||||||
|
echo -e ' Git menu
|
||||||
|
note: some commands require color= in [extensions]
|
||||||
|
This tool mainly exists as a menu command for Midnight Commander.
|
||||||
|
|
||||||
|
Usage: gitmenu [args]
|
||||||
|
gitmenu will interactively query for a command to use.
|
||||||
|
[args] will be passed on to that command
|
||||||
|
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
||||||
|
function argsreq {
|
||||||
|
echo Arguments required
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
while getopts h opt
|
||||||
|
do case "$opt" in
|
||||||
|
h)
|
||||||
|
usage
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
PRC="cat"
|
||||||
|
hash highbeam 2> /dev/null && PRC="highbeam"
|
||||||
|
export HB_RULES='"^\[.\]" "$G" \
|
||||||
|
"|.*|" "$W" \
|
||||||
|
"^#\s.*" "$Y" \
|
||||||
|
'
|
||||||
|
echo '# GIT:
|
||||||
|
|
||||||
|
[a] | Add | files to track*
|
||||||
|
[c] | Commit | changes to local repository
|
||||||
|
[d] | Difference | of current and previous versions
|
||||||
|
[l] | Log |
|
||||||
|
[m] | Merge | conflicting change sets
|
||||||
|
[p] | Pull | changes from remote repository
|
||||||
|
[P] | Push | changes to remote repository
|
||||||
|
[r] | Remove | files*
|
||||||
|
[u] | Update | from local repository
|
||||||
|
[s] | Status |
|
||||||
|
|
||||||
|
[q] | Quit |
|
||||||
|
|
||||||
|
* Requires arguments
|
||||||
|
' | $PRC
|
||||||
|
|
||||||
|
echo Current arguments: "$@"
|
||||||
|
read -p "Command: " -N 1 CMD
|
||||||
|
echo ""
|
||||||
|
LESS="less -R -S"
|
||||||
|
case "$CMD" in
|
||||||
|
a)
|
||||||
|
[[ -z "$@" ]] && argsreq
|
||||||
|
find "$@" \( -type d -name .git -prune \) -o -type f -print
|
||||||
|
read -p "Add all these files? y/n" foo
|
||||||
|
[[ $foo = "n" ]] && exit
|
||||||
|
git add "$@"
|
||||||
|
;;
|
||||||
|
c)
|
||||||
|
[[ -z "$@" ]] || {
|
||||||
|
echo Commiting files:
|
||||||
|
find "$@" \( -type d -name .git -prune \) -o -type f -print
|
||||||
|
}
|
||||||
|
[[ -z "$@" ]] && {
|
||||||
|
git status
|
||||||
|
}
|
||||||
|
read -e -p "Commit message: " MSG
|
||||||
|
[[ -z "$@" ]] && {
|
||||||
|
git commit -m "$MSG" -a
|
||||||
|
} || {
|
||||||
|
git commit -m "$MSG" "$@"
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
git diff "$@"
|
||||||
|
;;
|
||||||
|
l)
|
||||||
|
git log "$@"
|
||||||
|
;;
|
||||||
|
m)
|
||||||
|
git merge "$@"
|
||||||
|
;;
|
||||||
|
p)
|
||||||
|
git pull "$@"
|
||||||
|
;;
|
||||||
|
P)
|
||||||
|
git push "$@"
|
||||||
|
;;
|
||||||
|
r)
|
||||||
|
[[ -z "$@" ]] && argsreq
|
||||||
|
find "$@" \( -type d -name .git -prune \) -o -type f -print
|
||||||
|
read -p "Remove all these files? y/n" foo
|
||||||
|
[[ $foo = "n" ]] && exit
|
||||||
|
git rm "$@"
|
||||||
|
;;
|
||||||
|
s)
|
||||||
|
git status "$@"
|
||||||
|
;;
|
||||||
|
q)
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo Command $CMD not recognized
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user