103 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
# output current branch to STDOUT
 | 
						|
function wgbranch {
 | 
						|
  cat ./.git/HEAD | perl -p -e 's/^ref:\srefs\/heads\/(.+)$/\1/g'
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
# 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"
 | 
						|
}
 | 
						|
 |