Como faço para ignorar um diretório com o SVN?

Acabei de começar a usar o SVN e tenho um diretório de cache que não preciso de controle de origem. Como posso ignorar todo o diretório / pasta com o SVN?

Eu estou usando versões e TextMate no Mac OS X e na linha de comando.

Defina a propriedade svn:ignore do diretório pai:

 svn propset svn:ignore dirname . 

Se você tiver várias coisas para ignorar, separe por novas linhas no valor da propriedade. Nesse caso, é mais fácil editar o valor da propriedade usando um editor externo:

 svn propedit svn:ignore . 

Aqui está um exemplo de estrutura de diretórios:

 \project \source \cache \other 

Quando no project você vê que o seu diretório de cache não é adicionado e aparece como tal.

 > svn st M source ? cache 

Para definir a propriedade ignore, faça

svn propset svn: ignora o cache.

onde svn:ignore é o nome da propriedade que você está configurando, cache é o valor da propriedade e . é o diretório no qual você está definindo essa propriedade. Deve ser o diretório pai do diretório de cache que precisa da propriedade.

Para verificar quais propriedades estão definidas:

 > svn proplist Properties on '.': svn:ignore 

Para ver o valor de svn:ignore :

 > svn propget svn:ignore cache 

Para excluir propriedades definidas anteriormente:

 svn propdel svn:ignore 

Importante mencionar:

Na linha de comando você não pode usar

 svn add * 

Isto também irá adicionar os arquivos ignorados, porque a linha de comando expande * e, portanto, o svn add acredita que você quer que todos os arquivos sejam adicionados. Portanto, use isso em vez disso:

 svn add --force . 

Como passei algum tempo tentando fazer com que isso funcionasse, deve-se notar que, se os arquivos já existirem no SVN, você precisará svn delete los e, em seguida, editar a propriedade svn:ignore .

Eu sei que parece óbvio, mas eles continuaram aparecendo como ? na minha lista de svn status , quando eu pensei que seria apenas ignorá-los localmente.

Para expandir um pouco, se você estiver fazendo isso com a ferramenta de linha de comando svn, digite:

 svn propedit svn:ignore path/to/dir 

que irá abrir o seu editor de texto de sua escolha, então digite ‘*’ para ignorar tudo dentro dele, e salve + quit – isso includeá o próprio diretório no svn, mas ignorará todos os arquivos dentro dele, para ignorar o diretório, use o caminho do pai e, em seguida, digite o nome do diretório no arquivo. Depois de salvar, execute uma atualização (‘svn up’) e, em seguida, verifique o caminho apropriado.

Defina a propriedade svn:ignore no diretório pai:

 $ cd parentdir $ svn ps svn:ignore . 'cachedir' 

Isso sobrescreverá qualquer valor atual de svn:ignore . Você edita o valor com:

 $ svn pe svn:ignore . 

Qual vai abrir seu editor. Você pode adicionar vários padrões, um por linha.

Você pode ver o valor atual com:

 $ svn pg svn:ignore . 

Se você estiver usando uma GUI, deve haver uma opção de menu para fazer isso.

Obrigado por todas as contribuições acima. Gostaria apenas de compartilhar algumas informações adicionais de minhas experiências, ignorando os arquivos.


Quando as pastas já estão sob controle de revisão

Depois de svn import e svn co os arquivos, o que normalmente fazemos pela primeira vez.

Todo o cache de tempo de execução, pastas de anexos, estarão sob version control. Então, antes do svn ps svn: ignore , precisamos deletá-lo do repository.

Com o SVN versão 1.5 acima, podemos usar svn del --keep-local your_folder , mas para uma versão anterior, minha solução é:

  1. svn exporta uma cópia limpa de suas pastas (sem pasta oculta .svn )
  2. svn del o local e repository,
  3. svn ci
  4. Copie de volta as pastas
  5. Faça svn st e confirme se as pastas estão sinalizadas como ‘?’
  6. Agora podemos fazer svn ps de acordo com as soluções

Quando precisamos de mais de uma pasta para ser ignorada

  • Em um diretório eu tenho duas pastas que precisam ser definidas como svn:ignore
  • Se definirmos um, o outro será removido.
  • Então nos perguntamos se precisamos de svn pe

svn pe precisará editar o arquivo de texto, e você pode usar este comando se necessário para configurar seu editor de texto usando o vi :

 export SVN_EDITOR=vi 
  1. Com o “o” você pode abrir uma nova linha
  2. Digite todos os nomes das pastas que você deseja ignorar
  3. Tecla ‘esc’ para escaping do modo de edição
  4. Digite “: wq” e pressione Enter para salvar e sair

O arquivo parece algo simplesmente assim:

 runtime cache attachments assets 

Remova primeiro …

Se o seu diretório foo já estiver sob version control, remova-o primeiro com:

 svn rm --keep-local foo 

… então ignore:

 svn propset svn:ignore foo . 

… e se você quiser ignorar mais de um diretório (digamos, arquivos build/ temp/ e *.tmp ), você pode fazê-lo em duas etapas (ignorando o primeiro e editando ignorar propriedades (veja outras respostas aqui) ou um poderia escrever algo como

 svn propset svn:ignore "build temp *.tmp" . 

na linha de comando.

Se você estiver usando o cliente particular do SVN, o TortoiseSVN , então, no commit, você tem a opção de clicar com o botão direito nos itens e selecionar “Add to ignore list”.

O comando para ignorar múltiplas inputs é um pouco complicado e requer barras invertidas.

 svn propset svn:ignore "cache\ tmp\ null\ and_so_on" . 

Este comando irá ignorar qualquer coisa chamada cache , tmp , null e and_so_on no diretório atual.

Eu tive problemas para obter diretórios nesteds para serem ignorados; o diretório principal que eu queria ignorar não seria mostrado com ‘svn status’, mas todos os subdiretórios o fizeram. Isso é provavelmente auto-evidente para todos os outros, mas eu pensei em compartilhá-lo:

EXEMPLO:

/tronco

/ trunk / cache

/ trunk / cache / subdir1

/ trunk / cache / subdir2

 cd /trunk svn ps svn:ignore . /cache cd /trunk/cache svn ps svn:ignore . * svn ci 

Bash oneliner for multiple ignores:

 svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath" 

Se o diretório do seu projeto for denominado / Project e seu diretório de cache for denominado / Project / Cache, será necessário definir uma propriedade de subversão em / Project. O nome da propriedade deve ser “svn: ignore” e o valor da propriedade deve ser “Cache”.

Consulte esta página no manual do Subversion para mais informações sobre propriedades.

A resposta de Jason vai fazer o truque. No entanto, em vez de definir svn: ignore para “.” no diretório de cache, você pode include “cache” na propriedade svn: ignore do diretório pai , caso o diretório de cache não esteja sempre presente. Eu faço isso em várias pastas “descartáveis”.

“Thank-you” svn para uma maneira tão horrível, falsa e difícil de ignorar arquivos.

Então eu escrevi um script svn-ignore-all :

 #!/bin/sh # svn-ignore-all # usage: # 1. run svn status to see what is going on at each step # 2. add or commit all files that you DO want to have in svn # 3. remove any random files that you don't want to svn:ignore # 4. run this script to svn:ignore everything marked '?' in output of `svn status` svn status | grep '^?' | sed 's/^? *//' | while read f; do d=`dirname "$f"` b=`basename "$f"` ignore=`svn propget svn:ignore "$d"` if [ -n "$ignore" ]; then ignore="$ignore " fi ignore="$ignore$b" svn propset svn:ignore "$ignore" "$d" done 

Além disso, para ignorar uma lista específica de arquivos / nomes de caminho, podemos usar essa variante svn-ignore . Eu acho que svn-ignore-all deve ser como xargs svn-ignore.

 #!/bin/sh # svn-ignore # usage: # svn-ignore file/to/ignore ... for f; do d=`dirname "$f"` b=`basename "$f"` ignore=`svn propget svn:ignore "$d"` if [ -n "$ignore" ]; then ignore="$ignore " fi ignore="$ignore$b" svn propset svn:ignore "$ignore" "$d" done 

Mais uma coisa: eu tendem a poluir meus svn checkouts com muitos arquivos randoms. Quando é hora de confirmar, eu movo esses arquivos para um subdiretório ‘antigo’ e digo ao svn para ignorar ‘old’.

PARA MANTER DIRETÓRIOS QUE SVN IRÁ IGNORAR:

  1. isso excluirá os arquivos do repository, mas manterá o diretório sob o controle SVN:

svn delete –keep-caminho local / diretório_para_keep / *

  1. então defina para ignorar o diretório (e todo o conteúdo):

svn propset svn: ignora o caminho “*” / directory_to_keep

Se você estiver usando um frontend para o SVN como o TortoiseSVN, ou algum tipo de integração com o IDE, também deve haver uma opção de ignorar no mesmo menu que a operação commit / add.

Defina a propriedade svn: ignore. A maioria das ferramentas svn da interface do usuário tem uma maneira de fazer isso, bem como a discussão da linha de comando no link.

Como você está usando versões, é realmente muito fácil:

  • Procure sua cópia com check-out
  • Clique no diretório para ignorar
  • Na checkbox “Ignorar no botão direito, clique em Editar
  • Digite *. * Para ignorar todos os arquivos (ou * .jpg para apenas arquivos jpg, etc.)

Assista suas barras finais também. Descobri que incluindo images/* no meu arquivo de configuração de ignorar não ignorou ./images/ . Quando eu corri o svn status -u ainda mostrou ? images ? images . Então, eu mudei a configuração de ignorar para apenas images , sem barras. Executou uma verificação de status e apagou-a.

Resolvido com o Eclipse da seguinte maneira:

Primeiro de tudo, faça uma synchronization da sua pasta para o projeto:

equipe -> sincronizar

Na próxima exibição, visão de equipe, você pode ver todos os resources que você pode confirmar para o servidor SVN.

Portanto, selecione a pasta de resources do recurso que você deseja ignorar e, em seguida, ignore-a usando

equipe -> adicionar ao svn:ignore .

Depois disso, na janela de confirmação, selecione a primeira opção: “ignorar pelo nome”.

Por exemplo, se eu quiser ignorar a pasta de destino e seus resources .class, farei a synchronization e, na exibição de synchronization, selecionarei a pasta de destino. Depois disso, selecionarei

team-> add

para svn:ignore e depois eu confirmo a primeira opção na janela de confirmação.

Depois de perder muito tempo procurando como fazer essa atividade simples, resolvi postar que não era difícil encontrar uma explicação decente.

Primeiro deixe a estrutura da amostra

$ svn st? project / trunk / target? project / trunk / myfile.x

1 – primeiro configure o editor, em mycase vim export SVN_EDITOR = vim

2 – “svn propedit svn: ignore project / trunk /” irá abrir um novo arquivo e você pode adicionar seus arquivos e subdiretórios em nós tipo de caso “destino” salvar e fechar arquivo e funciona

$ svn st? project / trunk / myfile.x

obrigado.