O que significam os códigos de resultado no SVN?

300

O que significam os códigos de resultado no SVN? Eu preciso de uma referência rápida.

Polsonby
fonte

Respostas:

518

Para detalhes adicionais, consulte o SVNBook: "Status dos arquivos e diretórios da cópia de trabalho" .

Os status comuns:

U : o arquivo de trabalho foi atualizado

G : as alterações no repositório foram mescladas automaticamente na cópia de trabalho

M : cópia de trabalho é modificada

C : este arquivo está em conflito com a versão no repositório

? : Este arquivo não está sob controle de versão

! : Este arquivo está sob controle de versão, mas está ausente ou incompleto

R : Este arquivo será adicionado ao controle de versão (após confirmação)

A + : Este arquivo será movido (após confirmação)

D : Este arquivo será excluído (após confirmação)

S : Isso significa que o arquivo ou diretório foi alternado do caminho do restante da cópia de trabalho (usando svn switch) para uma ramificação

I : ignorado

X : definição externa

~ : Tipo alterado

R : O item foi substituído na sua cópia de trabalho. Isso significa que o arquivo foi agendado para exclusão e, em seguida, um novo arquivo com o mesmo nome foi agendado para inclusão em seu lugar.

L : o item está bloqueado

E : O item existia, como teria sido criado, por uma atualização svn.

Polsonby
fonte
12
"R": esse arquivo foi substituído
manifesto em
8
Que tal E? Toda a documentação diz que é "Existed", o que não é tão útil.
Pops
2
+1, mas "G: Alterações no repo foram incorporadas automaticamente para a cópia de trabalho" não é na fonte de dados (mais?)
Julian
86

Observe também que um código de resultado na segunda coluna se refere às propriedades do arquivo. Por exemplo:

U   filename.1
 U  filename.2  
UU  filename.3

filename.1: o arquivo foi atualizado
filename.2: uma propriedade ou propriedades do arquivo (como svn: keywords) foi atualizada
filename.3: o arquivo e suas propriedades foram atualizados

Matt Miller
fonte
36

Você sempre pode obter uma lista executando:

svn status --help
Taryn East
fonte
19

Quero dizer algo sobre o status "G",

G: as alterações no repositório foram mescladas automaticamente na cópia de trabalho

Eu acho que a definição acima não é clara, pode gerar um pouco de confusão, porque todos os arquivos são automaticamente mesclados na cópia de trabalho, a correta deve ser:

U = item (U) atualizado para a versão do repositório

G = alterações locais do item, mer (G) ed com repositório

C = alterações locais do item (C) infligidas pelo repositório

D = item (D) excluído da cópia de trabalho

A = item (A) copiado para a cópia de trabalho

Elie Xu
fonte
Sobre o status 'G'. Eu tinha 2 cópias das alterações em 2 diretórios diferentes de check-out. Confirmei as alterações de um dir-checkout e quando atualizei o outro dir-checkout mostrou o status 'G' indicando que as alterações no diretório local foram mescladas com o repositório.
gurum
18

Há também um status 'E'

E = O arquivo existia antes da atualização

Isso pode acontecer se você tiver criado manualmente uma pasta que seria criada executando uma atualização.

Jono D
fonte
13

Eu costumo usar svn através de uma interface gráfica, meu IDE ou um cliente. Por isso, nunca consigo me lembrar dos códigos quando preciso recorrer à linha de comando.

Acho esta folha de dicas uma grande ajuda: Subversion Cheat Sheet

UberAlex
fonte
1
Ele não lista o status G.
Arca-kun
13

Colunas de status SVN

$ svn status
L index.html

A saída do comando é dividida em seis colunas, mas isso não é óbvio, porque às vezes as colunas estão vazias. Talvez tivesse feito mais sentido indicar as colunas vazias com traços, como o ls -lfaz, em vez de nada. Então, por exemplo, L index.htmlpareceria--L--- index.html , o que torna óbvia que a única informação que temos é, na terceira coluna, aquela sobre bloqueio. De qualquer forma, uma vez que você saiba que isso começa a fazer mais sentido.

Primeira coluna do status SVN: A, D, M, R, C, X, I,?,!, ~

A primeira coluna indica que um item foi adicionado, excluído ou alterado.

      Sem modificações.

 A    O item está agendado para adição.

 D    O item está agendado para exclusão.

 M    O item foi modificado.

 R    O item foi substituído na sua cópia de trabalho. Isso significa que o arquivo foi agendado para exclusão e, em seguida, um novo arquivo com o mesmo nome foi agendado para inclusão em seu lugar.

 C    O conteúdo (ao contrário das propriedades) do item entra em conflito com as atualizações recebidas do repositório.

 X    O item está relacionado a uma definição externa.

 I    O item está sendo ignorado (por exemplo, com a propriedade svn: ignore).

 ?    O item não está sob controle de versão.

 !    O item está ausente (por exemplo, você o moveu ou o excluiu sem usar o svn). Isso também indica que um diretório está incompleto (uma verificação ou atualização foi interrompida).

 ~    O item tem a versão como um tipo de objeto (arquivo, diretório, link), mas foi substituído por um tipo diferente de objeto.

Segunda coluna do status SVN: M, C

A segunda coluna informa o status das propriedades de um arquivo ou diretório.

      Sem modificações.

 M    As propriedades deste item foram modificadas.

 C    As propriedades deste item estão em conflito com as atualizações de propriedades recebidas do repositório.

Terceira coluna do status SVN: L

A terceira coluna é preenchida apenas se o diretório da cópia de trabalho estiver bloqueado (uma limpeza svn normalmente deve ser suficiente para limpá-lo)

      O item não está bloqueado.

 L    O item está bloqueado.

Status da SVN quarta coluna: +

A quarta coluna é preenchida apenas se o item estiver agendado para adição com histórico.

      Nenhum histórico agendado com confirmação.

 +    Histórico agendado com confirmação.

Quinta coluna do status SVN: S

A quinta coluna é preenchida apenas se a cópia de trabalho do item for alternada em relação ao pai

      Item é um filho de seu diretório pai.

 S    O item está trocado.

SVN Status sexta coluna: K, O, T, B

A sexta coluna é preenchida com informações de bloqueio.

      Quando –show-updates é usado, o arquivo não está bloqueado. Se –show-updates não for usado, isso significa apenas que o arquivo não está bloqueado nesta cópia de trabalho.

 K    O arquivo está bloqueado nesta cópia de trabalho.

 O    O arquivo é bloqueado por outro usuário ou em outra cópia de trabalho. Isso aparece apenas quando –show-updates é usado.

 T    O arquivo foi bloqueado nesta cópia de trabalho, mas o bloqueio foi roubado e é inválido. O arquivo está atualmente bloqueado no repositório. Isso só aparece quando –show-updates é usado.-

 B    O arquivo foi bloqueado nesta cópia de trabalho, mas o bloqueio foi quebrado e é inválido. O arquivo não está mais bloqueado. Isso só aparece quando –show-updates é usado.

Sétima coluna do status SVN: *

As informações desatualizadas aparecem na sétima coluna (somente se você passar na opção –show-updates). Isso é algo que as pessoas novas no SVN esperam que o comando faça, não percebendo que ele apenas compara o estado atual do arquivo com as informações que ele buscou no servidor na última atualização.

      O item da sua cópia de trabalho está atualizado.

 *    Existe uma revisão mais recente do item no servidor.

Spyryto
fonte
7

Sempre que você não tiver acesso à documentação ( SVNBook ), digite (Linux):

svn help status | grep \'\?\'
svn help status | grep \'\!\'
svn help status | grep \'\YOUR_SYMBOL_HERE\'

ou insira a seguinte função no seu arquivo ~ / .bashrc, da seguinte maneira:

svncode() {
  symbol=$1
  [ $symbol ] &&  svn help status | grep \'$(echo $symbol)\' || \
  echo "usage: svncode <symbol>"
}

insira a descrição da imagem aqui

Alan
fonte
1
Na IMO, não é "quando você está com pressa", mas "quando você não tem acesso à documentação" (por exemplo, SVNBook).
bahrep
@ Bahrep obrigado, essa é a maneira de olhar para ele. Corrigido conforme sugerido.
Alan Alan