From a55cffa8b3cbc02e2b021ed25e67203d337c36bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Sun, 12 Aug 2018 18:37:31 +0200 Subject: Move some definitions around and add --desktop option --- shellrc.d/git | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 shellrc.d/git (limited to 'shellrc.d/git') diff --git a/shellrc.d/git b/shellrc.d/git new file mode 100644 index 0000000..47edae5 --- /dev/null +++ b/shellrc.d/git @@ -0,0 +1,29 @@ +# vim: ft=sh: + +# Automatic branch merger (merge branch, push it to server and remove branch) +# Expects name of the branch as argument +# It fails if it's not fast forward merge and if there is fixup! commit. +gitbmerge() { + ( + set -e + if [ -n "$(git log --grep="^fixup\!" HEAD.."$1")" ]; then + echo "First squash fixups!" + exit 1 + fi + local WT="$(git worktree list | sed -nE "/\[$1\]/{s/([^ ]+) .*/\1/p}")" + if [ -n "$WT" ]; then + rm -r "$WT" + git worktree prune + fi + git merge --ff-only "$1" && git push && git branch -d "$1" && git push origin :"$1" + ) +} + +# Create new branch from HEAD +gitbnew() { + git branch "$1" HEAD + local NW="$(git rev-parse --show-toplevel)-$1" + git worktree add "$NW" $1 + cd "$NW" + git submodule update --init --recursive +} -- cgit v1.2.3