Skip to content

Instantly share code, notes, and snippets.

@arglbr
Created July 10, 2012 15:26
Show Gist options
  • Save arglbr/3084057 to your computer and use it in GitHub Desktop.
Save arglbr/3084057 to your computer and use it in GitHub Desktop.
Git "automation" script
#!/bin/sh
# Adriano Laranjeira (@arglbr)
# Based on:
# http://jonrohan.me/guide/git/dead-simple-git-workflow-for-agile-teams/
# Language: PT-BR
#
nocGitHelp(){
echo "Uso: nocgit [ARG] [BRANCH]"
echo "Cria nova branch, atualiza a source tree local, envia as"
echo "alterações para teste e remove a branch em desenvolvimento."
echo "Serve unicamente como facilitador para o trabalho com o VCS Git"
echo "dentro do ambiente NOC da NETSERVICOS."
echo ""
echo " -d, --taskdone Remove a branch corrente e volta para a"
echo " branch master.É o quarto passo, executar"
echo " somente quando o desenvolvimento foi testado"
echo " e inserido em produção."
echo ""
echo " -h, --help Imprime este help e sai"
echo ""
echo " -m, --merge Atualiza a branch master local com a branch"
echo " master remota, e repassa as atualizações"
echo " encontradas para a branch em desenvolvimento."
echo " É o segundo passo, e deve ser executado para"
echo " boa margem de segurança de duas a três vezes"
echo " por dia."
echo ""
echo " -n, --newbranch Cria uma nova branch para desenvolvimento."
echo " É o primeiro passo a ser tomado para iniciar"
echo " o desenvolvimento de uma nova funcionalidade."
echo ""
echo " -s, --send Envia a branch atual para o repositório"
echo " remoto. É o terceiro passo, executado quando"
echo " o desenvolvimento está pronto para ser"
echo " testado em ambiente de teste."
echo ""
echo " -v --version Mostra informações de versão e sai."
echo ""
echo "Relate bugs no nocgit para o seguinte endereço:"
echo "adriano.laranjeira@netservicos.com.br"
echo ""
echo ""
exit 0
}
nocGitVersion() {
echo "Script helper para tarefas rotineiras com Git"
echo "Versão 0.1"
exit 0
}
nocGitInvalidArg() {
echo "`basename $0`: argumentos inválidos."
echo "Utilize o comando -h ou --help para obter ajuda."
exit 1
}
gitNewbranch() {
# Cria uma nova branch para desenvolvimento.
if [[ "$1" = *[[:alpha:]]* ]] ; then
git checkout -b $1
else
echo "Uso: `basename $0` {DESCRICAO}"
echo "O nome da branch deve ser o mais suscinto possível (25 digitos ou menos)."
exit 1
fi
}
gitBranchOnMasterError() {
echo "ERRO:"
echo "Entre em sua branch para executar este comando."
echo "git branch - Lista as branchs ativas"
echo "git checkout NOME_BRANCH - Muda para a branch NOME_BRANCH"
echo ""
echo ""
exit 1
}
gitMerge() {
# Pega as alterações na branch master e atualiza em sua branch.
if [[ "${MYBRANCH}" = "master" ]] ; then
gitBranchOnMasterError
fi
git checkout master
git pull origin master
git checkout ${MYBRANCH}
git rebase master
}
gitSendBranch() {
# Envia a branch testada para o repositorio intermediario
if [[ "${MYBRANCH}" = "master" ]] ; then
gitBranchOnMasterError
fi
git checkout master
git merge ${MYBRANCH}
git push origin ${MYBRANCH}
git checkout ${MYBRANCH}
}
gitTaskDone() {
# Remove a branch corrente e volta para o master
if [[ "${MYBRANCH}" = "master" ]] ; then
gitBranchOnMasterError
fi
git checkout master
git branch -d ${MYBRANCH}
}
if [ $# -lt 1 ]; then
nocGitInvalidArg
fi
gitSetGlobals() {
# Set de variaveis globais
ref=$(git symbolic-ref HEAD 2> /dev/null) || nocGitInvalidArg
MYBRANCH="${ref#refs/heads/}"
}
case $1 in
"-d" | "--taskdone")
gitSetGlobals
gitTaskDone
;;
"-h" | "--help")
nocGitHelp
;;
"-m" | "--merge")
gitSetGlobals
gitMerge
;;
"-n" | "--newbranch")
gitSetGlobals
gitNewbranch $2
;;
"-s" | "--send")
gitSetGlobals
gitSendBranch
;;
"-v" | "--version")
nocGitVersion
;;
*)
nocGitInvalidArg
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment