Como ignoro arquivos no Subversion?
Além disso, como localizo arquivos que não estão sob controle de versão?
Como ignoro arquivos no Subversion?
Além disso, como localizo arquivos que não estão sob controle de versão?
Respostas:
(Esta resposta foi atualizada para corresponder ao comportamento dos SVN 1.8 e 1.9)
Você tem 2 perguntas:
Por "arquivo ignorado", quero dizer que o arquivo não aparecerá nas listas mesmo como "não versionado": seu cliente SVN fingirá que o arquivo não existe no sistema de arquivos.
Arquivos ignorados são especificados por um "padrão de arquivo". A sintaxe e o formato dos padrões de arquivo são explicados na documentação online do SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Padrões de arquivo no Subversion".
O Subversion, a partir da versão 1.8 (junho de 2013) e posterior, suporta três maneiras diferentes de especificar padrões de arquivos. Aqui está um resumo com exemplos:
global-ignores
opção:global-ignores
lista não seja compartilhada por outros usuários, e se aplica a todos os repositórios que você faz checkout no seu computador.C:\Users\{you}\AppData\Roaming\Subversion\config
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
em ambos HKLM
e HKCU
.~/.subversion/config
svn:ignore
propriedade, que está definida nos diretórios (não nos arquivos):.gitignore
funciona.svn:ignore
é aplicado aos diretórios e não é recursivo ou herdado. Qualquer arquivo ou imediato subdiretório diretório pai que corresponda ao padrão de arquivo será excluído.Enquanto o SVN 1.8 adiciona o conceito de "propriedades herdadas", a svn:ignore
própria propriedade é ignorada nos diretórios descendentes não imediatos:
cd ~/myRepoRoot # Open an existing repo.
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt".
svn status # Check to see if the file is ignored or not.
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored.
svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory.
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory.
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt".
svn status
> ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored!
> 1 unversioned file
(Portanto, o arquivo ./subdirectory/ignoreThis
não é ignorado, mesmo que " ignoreThis.txt
" seja aplicado na .
raiz do repositório).
Portanto, para aplicar uma lista de ignorados recursivamente, você deve usar svn propset svn:ignore <filePattern> . --recursive
.
<filePattern>
valor for diferente em um diretório filho, o valor da criança substituirá completamente os pais, portanto, não haverá efeito "aditivo".<filePattern>
na raiz .
, deverá alterá-lo com --recursive
para substituí-lo nos diretórios filho e descendente.Observo que a sintaxe da linha de comando é contra-intuitiva.
svn ignore pathToFileToIgnore.txt
no entanto, não é assim que o recurso de ignorar do SVN funciona.svn:global-ignores
propriedade. Requer SVN 1.8 (junho de 2013):svn:ignore
, exceto que faz uso do recurso "propriedades herdadas" do SVN 1.8.svn:ignore
, o padrão de arquivo é aplicado automaticamente em todos os diretórios descendentes (não apenas nos filhos imediatos).
svn:global-ignores
com o --recursive
sinalizador, pois os padrões de arquivos ignorados herdados são aplicados automaticamente à medida que são herdados.Executando o mesmo conjunto de comandos que no exemplo anterior, mas usando svn:global-ignores
:
cd ~/myRepoRoot # Open an existing repo
echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt"
svn status # Check to see if the file is ignored or not
> ? ./ignoreThis.txt
> 1 unversioned file # ...it is NOT currently ignored
svn propset svn:global-ignores "ignoreThis.txt" .
svn status
> 0 unversioned files # ...but now the file is ignored!
cd subdirectory # now open a subdirectory
echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt"
svn status
> 0 unversioned files # the file is ignored here too!
Todo esse arranjo foi confuso para mim, porque a terminologia do TortoiseSVN (usada no sistema de menus do Windows Explorer) era inicialmente enganosa para mim - eu não tinha certeza do significado do menu "Adicionar recursivamente", "Adicionar *" e "Adicionar" do menu Ignorar opções Espero que este post explique como o recurso Ignorar se vincula ao recurso SVN Properties. Dito isso, sugiro o uso da linha de comando para definir arquivos ignorados, para que você tenha uma idéia de como ele funciona, em vez de usar a GUI, e use apenas a GUI para manipular propriedades depois de se sentir confortável com a linha de comando.
O comando svn status
ocultará arquivos ignorados (ou seja, arquivos que correspondam a um global-ignores
padrão RGA , ou que correspondam ao padrão de um diretório pai imediato svn:ignore
ou que correspondam a qualquer svn:global-ignores
padrão do diretório do ancesor .
Use a --no-ignore
opção para ver os arquivos listados. Os arquivos ignorados têm um status de I
, em seguida, canalize a saída para grep
mostrar apenas as linhas começando com "I".
O comando é:
svn status --no-ignore | grep "^I"
Por exemplo:
svn status
> ? foo # An unversioned file
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore
> ? foo # An unversioned file
> I ignoreThis.txt # A file matching an svn:ignore pattern
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore | grep "^I"
> I ignoreThis.txt # A file matching an svn:ignore pattern
ta-da!
svn propedit svn:ignore .
e nenhum editor de texto estiver configurado, você receberá uma mensagem de erro dizendo svn: E205007: Nenhuma das variáveis de ambiente SVN_EDITOR, VISUAL ou EDITOR está definida e nenhuma opção de configuração de tempo de execução 'editor-cmd' foi encontrado em vez de abrir um editor. Então, apenas especifique --editor-cmd nano como este #svn propedit svn:ignore . --editor-cmd nano
svn status | grep '^?'
Use o comando a seguir para criar uma lista que não esteja nos arquivos de controle de versão.
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Em seguida, edite o arquivo para deixar apenas os arquivos que você deseja realmente ignorar . Em seguida, use este para ignorar os arquivos listados no arquivo:
svn propset svn:ignore -F ignoring.txt .
Observe o ponto no final da linha. Diz ao SVN que a propriedade está sendo definida no diretório atual.
Exclua o arquivo:
rm ignoring.txt
Finalmente comprometa,
svn ci --message "ignoring some files"
Você pode então verificar quais arquivos são ignorados via:
svn proplist -v
svn status | awk "/^?/ {print \$2}" > ignoring.txt
.
svn pg svn:ignore . >> ignore.txt
após o primeiro comando para acrescentar as ignições atuais ao arquivo.
Você pode ignorar um arquivo ou diretório como .gitignore. Basta criar um arquivo de texto da lista de diretórios / arquivos que você deseja ignorar e executar o código abaixo:
svn propset svn:ignore -F ignorelist.txt .
OU, se você não quiser usar um arquivo de texto, faça o seguinte:
svn propset svn:ignore "first
second
third" .
Fonte: Blog de Karsten - Defina svn: ignore para vários arquivos da linha de comando
svn:ignore
comando (ver stackoverflow.com/a/58380306/189518 )
Se você estiver usando o TortoiseSVN , clique com o botão direito do mouse em um arquivo e selecione TortoiseSVN / Adicionar à lista de ignorados . Isso adicionará o arquivo / curinga aosvn:ignore
propriedade
svn:ignore
será verificado quando você estiver registrando arquivos e os arquivos correspondentes serão ignorados. Eu tenho a seguinte lista de ignorados para um projeto do Visual Studio .NET:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
Você pode encontrar esta lista no menu de contexto em TortoiseSVN / Properties .
Como ninguém parece ter mencionado isso ...
svn propedit svn:ignore .
Em seguida, edite o conteúdo do arquivo para especificar os padrões a serem ignorados, saia do editor e pronto.
Encontrei o artigo .svnignore Example for Java .
Exemplo: .svnignore para Ruby on Rails,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
E depois disso:
svn propset svn:ignore -F .svnignore .
Exemplos para .gitignore. Você pode usar para o seu .svnignore
Ao usar o propedit, verifique se não há espaços à direita, pois isso fará com que o arquivo seja excluído da lista de ignorados.
Eles serão inseridos automaticamente se você usar o preenchimento automático de tabulação no linux para criar o arquivo, para começar:
svn propset svn:ignore 'file1
file2' .
Outra solução é:
svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt
ou linha por linha
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
O que faz:
Além disso, se você usar o Tortoise SVN, poderá fazer o seguinte:
config
arquivo.
Uma versão mais legível da resposta de bkbilly:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
O que faz:
Você também pode definir um padrão de ignição global no arquivo de configuração do SVN.
svn status
lhe dirá quais arquivos não estão no SVN, bem como o que foi alterado.
Observe as propriedades SVN da propriedade ignore.
Para todas as coisas SVN, o Red Book é leitura obrigatória.
Adicionando um diretório ao subversion e ignorando o conteúdo do diretório
svn propset svn:ignore '\*.*' .
ou
svn propset svn:ignore '*' .
Use o comando svn status em sua cópia de trabalho para mostrar o status dos arquivos, os arquivos que ainda não estão sob controle de versão (e não são ignorados) terão um ponto de interrogação ao lado deles.
Quanto a ignorar arquivos, você precisa editar a propriedade svn: ignore, leia o capítulo Ignorando Itens Nãoversionados no svnbook em http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore. html . O livro também descreve mais sobre o uso do status svn.
SVN ignore
é fácil de gerenciar no TortoiseSVN. Abra o TortoiseSVN e clique com o botão direito do mouse no menu arquivo e selecione Adicionar à lista de ignorados.
Isso adicionará os arquivos na svn:ignore
propriedade Ao fazer o check-in dos arquivos, os arquivos correspondentes asvn:ignore
serão ignorados e não serão confirmados.
No projeto Visual Studio, adicionamos os seguintes arquivos para ignorar:
bin obj
*.exe
*.dll
*.pdb
*.suo
Estamos gerenciando o código-fonte no SVN do Comparetrap usando esse método com êxito
O que funcionou para mim:
Como ignoro arquivos no Subversion?
1.No File Explorer, clique com o botão direito do mouse no nome da pasta do projeto SVN
2.Clique em "SVN Commit ..."
3.A janela "commit" será exibida
4.Clique com o botão direito do mouse na pasta / arquivo que você deseja ignorar
5.Clique em Adicionar à lista de ignorados
6.Selecione a pasta / arquivo
7.Commit a "alteração de propriedade" para SVN
Além disso, como localizo arquivos que não estão sob controle de versão?
Após a Etapa 3 acima, clique em "Mostrar arquivos não versionados"