# output current branch to STDOUT function wgbranch { cat ./.git/HEAD | perl -p -e 's/^ref:\srefs\/heads\/(.+)$/\1/g' } # Outputs staged, unstaged, untracked files # Similar to `git status` output but without the cruft function wg-git-changed-files { tracked_staged=$(git diff --name-only --staged) tracked_unstaged=$(git diff --name-only) untracked_unstaged=$(git ls-files --others --exclude-standard) echo "${tracked_staged}\n${tracked_unstaged}\n${untracked_unstaged}" } # git status "plumbing" version # Useful for piping into grep -> xargs git add function wgst { git status -s | awk '{ print $2 }' } # git add by file regex pattern function wgadd { pattern="$2" wgst | grep "${pattern}" | xargs git add } # compare file with another branch function wgcompare_file { file_path="$1" compare_branch_a="master" compare_branch_b="$(wgbranch)" git diff "${compare_branch_a}:${file_path}" "${compare_branch_b}:${file_path}" } # output the stash ticket number to STDOUT function wgtix { wgbranch | perl -p -e 's/(?:feature|bugfix|refactor)\/(\w+-\d+).+$/\1/' } # search for a git branch by ticket number # useful when combined with `wgcheckout` # e.g. # $ wgcheckout "$(wgfind 1045)" # checks-out feature/GDMX-1045 ... # # if the `TICKET_NO` cannot be found, it will return the current branch function wgfind { TICKET_NO="$1" BRANCHNAME=$(git branch | grep "$TICKET_NO" | perl -p -e 's/^\s*//') if [ -z $BRANCHNAME ]; then BRANCHNAME="$(wgbranch)" fi echo "$BRANCHNAME" } # wrapper fn for "git checkout" that exports previous branch to env function wgcheckout { if [ -z $1 ]; then branchname="develop" else branchname="$1" fi echo " -- wgcheckout -- " echo "Storing branch \"$(wgbranch)\" in WGPREV ..." export WGPREV="$(wgbranch)" echo "Checking out \"$branchname\" ..." echo echo " -- git checkout -- " git checkout "$branchname" echo } # opens the current ticket-branch in web browser function wgjira { base_url="https://jira.hugeinc.com/browse" ticket=$(wgtix) open "${base_url}/${ticket}" } # wgcheckout combined with a fuzzy search function wgfcheckout { branchname=$(trim $(git branch | fzf-tmux)) [ ! -z "$branchname" ] && wgcheckout "$branchname" || return } # View an author's work within a specified date range. function wgviewcommits { author=$([ -z "$1" ] && echo "William Carroll" || echo "$1") todays_date=$(date +'%Y-%m-%d') date=$([ -z "$2" ] && echo "${todays_date}" || echo "$2") git log --all --author="${author}" --after="${date} 00:00" \ --before="${date} 23:59" }