Created
July 10, 2012 15:26
-
-
Save arglbr/3084057 to your computer and use it in GitHub Desktop.
Git "automation" script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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