Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Lock no branch

É possível fazer o lock no branch inteiro ou um lock all files do repositório? Tenho esta necessidade onde trabalho, pois selecionamos o master só para merges de hotfix e publicações em produção, mas vez ou outra alguém comita no master nos forçando a realizar um revert.

3 respostas
solução!

Oi Luan

Seu objetivo é que ninguém consiga commitar mais nesta branch, certo?

Se sim, você pode criar um update hook. Pra fazer isso, basta criar o arquivo chamado update com o conteúdo a seguir dentro de .git/hooks/:

#!/bin/sh
refname="$1"

if [[ $refname == "refs/heads/<NOME-DA-SUA-BRANCH>" ]]
then
    echo "Você não pode atualizar esse branch, ela está bloqueada!"
    exit 1
fi
exit 0

ps: repare que você vai precisar usar o nome da branch que você quer bloquear no lugar onde deixei <NOME-DA-SUA-BRANCH> (;

Rodrigo, tudo bem?

Cara, a pergunta pode ser meio "boba", mas queria entender essa solução que vc propôs pro amigo aí de cima. ^

Essa configuração deve ser feita aonde mais especificamente? No repositório remoto, certo? Por exemplo, eu utilizando o github, não sei aonde (e como) fazer esta configuração.

Digo, basta alterar o arquivo "update", adicionando esta configuração para que, depois do push, o remoto passe a contê-la e, posteriormente, todos que fizerem o clone do projeto tbm a contenham?

No serviço, utilizamos o TFS e eu gostaria de fazer este bloqueio dos commits lá tbm. Dá uma força ae.

Oi Wheslley

A configuração é feita no código local mesmo, mas pode ser commitada e enviada para o repositório remoto, pra quem fizer o pull importar ela junto.

Pra você entender melhor, abra qualquer projeto que use git e, na raiz do projeto, procure por um arquivo oculto chamado .git.

Você vai ver que dentro dele existem diversos diretórios e, entre eles, um que chama "hooks", onde você vai criar um arquivo chamado "update" -- sem extensão mesmo -- com o código que passei de exemplo aqui.

lembrando que, normalmente, o arquivo .git fica ignorado no seu .gitignore. Você tem que liberar o .git/hooks/update pra conseguir enviar essa alteração pro GitHub