Confirme o comando “svn ci” dependendo da minha localização atual

4

Estou trabalhando em um grande projeto usando o SVN e muitas vezes tenho que ir ver coisas nas filiais de outras pessoas e brincar com elas. Mas quero manter essas alterações locais, nunca comprometê-las. Por engano, no entanto, é muito fácil digitar svn ci -m"blabla" e confirmar minhas alterações na ramificação de outra pessoa. As filiais têm algum identificador para saber a quem pertencem, por exemplo, temos:

project-aa
project-bb
etc...

E o meu seria o projeto-bb. Existe uma maneira de garantir que eu me comprometo no ramo certo? Por exemplo, sempre que eu confirmar, se o texto no caminho não contiver "-bb", pergunte-me se tenho certeza.

Isso é possível?

    
por ddeunagomez 09.06.2016 / 08:40

3 respostas

2

Eu usaria uma função de shell:

svn () {
    if [[ $1 == "ci" || $1 == "commit" ]] && [[ $PWD != *"-bb"* ]]; then
        echo "don't commit to someone else's branch" >&2
        return 1
    fi    
    # now, do the actual svn command
    command svn "$@"  # quotes are crucial here
}
    
por 09.06.2016 / 13:56
1

Você poderia fazer um wrapper de script bash que você colocaria anteriormente em seu PATH ou renomeando o arquivo de programa svn existente.

Esse script simplesmente verifica se os parâmetros incluem essa sequência e reagem dependendo de sua localização ou não.

    
por 09.06.2016 / 09:24
0

Faça os checkouts por meio de git-svn . Você obtém os benefícios do git (por exemplo, troca rápida entre branches, diff mais bonito, cópia local completa para trabalhar offline,…), e qualquer commit que você fizer irá para o seu repositório git local, você precisaria fazer um push extra para enviar o código de volta ao svn.

O git-svn nem sempre é muito robusto, às vezes ele não consegue sincronizar as mudanças do svn e empurrar as alterações de volta para o svn é algumas vezes doloroso. Mas, para o seu caso de uso, isso não importaria.

    
por 10.06.2016 / 02:56