Verifique se um arquivo já está comprometido com o svn

3

Como posso verificar se um arquivo / pasta já está comprometido com o svn? Eu tenho um script de shell onde eu quero garantir que o arquivo / pasta selecionada pelo usuário para o check-in não seja confirmado. Por exemplo, se eu tentar fazer o check-in de uma pasta já comprometida usando

svn add myfolder

Recebo o seguinte aviso:

svn: warning: 'myfolder' is already under version control

    
por smokinguns 09.06.2011 / 07:03

3 respostas

5

Use o código de retorno de svn info . É 0 se sob controle de versão, diferente de zero.

Meu shell exibe códigos de retorno diferentes de zero depois de um comando, então é assim:

$ svn info trunk
Path: trunk
URL: https://(...)/trunk
Repository Root: https://(...)
Repository UUID: 651713a4-5a46-7e42-a99e-f31e79777eab
Revision: 213
Node Kind: directory
(...)

$ touch foo
$ svn info foo 
foo:  (Not a versioned resource)

svn: A problem occurred; see other errors for details

rc: 1

Como você faria isso em um script bash (semelhante em outros shells), com a supressão de info output:

svn info <filename> 1>/dev/null 2>&1
echo $?
    
por 09.06.2011 / 07:23
1

Estou usando isso:

if [ $(svn status $file | awk '{ print $1 }') == "?" ]; then
    echo "File is not under version control"
fi

Desta forma, você também pode consultar diferentes códigos de status do svn, que podem ser vistos aqui: link

    
por 17.04.2015 / 11:21
0

Eu queria resolver um problema semelhante: como parte de um script que gerava um arquivo, adicioná-lo automaticamente ao subversion, se isso não tivesse sido feito anteriormente.

Eu encontrei o seguinte trabalhado:

if ! svn info ${file} 1>/dev/null 2>&1 ; then
  svn add ${file}
fi

O teste de valores de saída no Bash me levou a essa resposta.

    
por 05.02.2016 / 13:34