Para muitas operações do Subversion, anexar o símbolo '@' ao final de um arquivo ou argumento de URL permite direcionar uma revisão específica desse arquivo. Por exemplo, "svn info test.txt@1234" fornecerá informações sobre o test.txt como ele existia na revisão 1234.
No entanto, quando o nome do arquivo contém um @, ele é interpretado incorretamente pelo Subversion como um especificador de revisão:
svn info 'test @ .txt' svn: Erro de sintaxe ao analisar a revisão '.txt'
Tentei aspas duplas e simples, além de escapar com '/', '\' e '@'. Como posso dizer ao Subversion para tratar os símbolos @ como parte do nome do arquivo?
Respostas:
Do livro SVN (ênfase adicionada):
fonte
news@11
podem ser um arquivo.@foo
para@bar
,svn rename @foo@ @bar
irá reclamar@bar
; mas se você conseguirsvn rename @foo@ @bar@
, o novo nome será literalmente@bar@
. Para evitar isso, adicione./
(ou.\
no Windows) para deixar claro que é um caminho local:svn rename @foo@ ./@bar
.A resposta original está correta, mas talvez não seja suficientemente explícita. As opções específicas da linha de comando unix são as seguintes:
ou
ou
Acabei de testar todos os três.
fonte
svn info [email protected]@
e funcionou também. Sim, sem aspas ou barras!bash
estrada :)Solução para adicionar vários arquivos em diferentes subpastas:
Apenas substitua o "png" em " @ .png" pelo tipo de arquivo que você deseja adicionar.
fonte
@
em seu nome como um caso especial, você pode anexar com segurança o@
símbolo para todos os nomes de arquivos:for file in $(find ./ -type f -iname "*.png"); do svn add "$file@"; done
. Além disso, essa abordagem não deixa seu repositório svn com uma estrutura de arquivo / diretório inconsistente com a cópia local de trabalho?exec
de encontrar pode ser ansioso:find . -type f -name "*@*.png" -exec svn add {}@ \;
para adicionar o seguinte arquivo: [email protected], faça o seguinte: svn add image \ @ 2x.png @
fonte
Basta adicionar
no arquivo que você precisa usar, independentemente do comando SVN, por exemplo:
para
fonte
No meu caso, eu precisava remover arquivos de um repositório SVN que continha um sinal @:
Isso não funcionaria:
Mas isso fez:
fonte
Para adicionar vários arquivos, existe uma solução alternativa:
fonte
svn status | awk '/\.png/ {print $2"@"}'| xargs svn add
Para comandos svn com 2 argumentos como "move", você deve acrescentar "@" apenas no parâmetro esquerdo (primeiro). Por exemplo:
Esta linha é importante: $ svn move README @ txt @ README2 @ txt
Como você pode ver, não precisamos anexar "@" em "README2 @ txt"
fonte
@David H
Eu apenas tentei um comando semelhante sem escapar dos símbolos @ e ainda funciona bem
Isto está no GNU bash, versão 3.2.48 (1) -release (x86_64-apple-darwin10.0) e svn 1.6.16
fonte
A única solução que funcionou para mim foi a mesma sugerida por @NPike
svn revert 'caminho / para / nome do arquivo @ ext @'
fonte
Hoje tive o problema com nomes de arquivos gerados a partir de endereços de e-mail (não é uma ideia muito boa!).
Solução, usando
printf
opções defind
expansão de shellfonte