Pergunta

Posso ignorar uma pasta no svn checkout? Eu preciso ignorar pasta Docs no check-out para o meu servidor de compilação.

Editar: Ignorar externos não é uma opção. Eu tenho algumas coisas externas que eu preciso.

Foi útil?

Solução

Você não pode ignorar diretamente pastas em um check-out, mas você pode usar checkouts esparsas no SVN 1.5. Por exemplo:

$ svn co http://subversion/project/trunk my_checkout --depth immediates

Este irá verificar arquivos e diretórios de seu tronco projeto em 'my_checkout', mas não recurse para esses diretórios. Por exemplo:

$ cd my_checkout && ls
bar/ baz foo xyzzy/

Depois de obter o conteúdo de 'bar' para baixo:

$ cd bar && svn update --set-depth infinity

Outras dicas

Sim, você pode usar o SVN 1,6. Você vai precisar fazer um check-out primeiro, em seguida, marcar a pasta de exclusão exclua a pasta indesejada.

svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs

A partir de agora todas as atualizações para a cópia de trabalho não vai repovoar a pasta docs.

Consulte http: //blogs.collab. net / subversion / 2009/03 / esparsas-diretórios-agora-com-exclusão / e http://subversion.apache.org/docs/release-notes/1.6.html#sparse-directory-exclusion para mais detalhes.

Tom

Com as versões anteriores para 1,5 Descobri que se você checkout apenas a parte superior mais pasta e, em seguida, atualização seletivamente, a partir de então atualizações único efeito que você fez check-out. Ie.

svn co -N foo
cd foo
svn up -N bar
svn up

A bandeira -N faz com que o não-recursiva operação. O exposto acima não irá verificar qualquer outra coisa no nível foo, por exemplo. dizer que há um lala pasta, o svn final, se não vai verificar essa pasta, mas vai atualizar bar.

Mas em um momento posterior você pode svn up lala e, assim, adicioná-lo ao caixa.

Presumivelmente, isso também funciona com o 1.5.

Esta é cliente TortoiseSVN 1.7.1 (pode estar disponível em algumas versões mais antigas também):

  • SVN check-out -> Selecionar URL de repositório

  • Clique em "Finalizar Encomenda Itens" (sob Caixa de profundidade) e selecione apenas o pastas necessário!

Você poderia colocar os docs pasta em um repositório externo e, em seguida, usar svn checkout --ignore-externals.

Sim, Subversion 1,5 tem um recurso chamado noreferrer checkouts esparsas que pode fazer exatamente esse tipo de coisa.

Eu encontrei esta questão procurando uma maneira de verificar as fontes WebKit, excluindo os testes de regressão. Acabei com o seguinte:

svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
  --depth immediates

cd WebKit
find . \
  -maxdepth 1 -type d \
  -not -name '.*' \
  -not -name '*Tests' \
  -not -name 'Examples' \
  -not -name 'Websites' \
  | (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)

Note que você pode alterar as exclusões como achar melhor, mas. * É recomendado para ignorar o diretório de trabalho (que já está atualizado) e todos os diretórios .svn.

Tenho recentemente resolvido a mesma tarefa. A idéia é obter a lista imediata de pasta / arquivos no repositório de excluir as entradas que você precisa, então confira as pastas restantes e atualizar os arquivos de imediato, se houver. Aqui está a solução:

    # Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
    # This files are to be excluded (folders are ending with '/')
    # this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
    # Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
    # Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \
    # Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \
    # Initial nonrecursive checkout of repository - just empty
    # to the current (./) working directory
svn co $rpath ./ --depth empty && \
    # Update the files
svn up $files &&\
    # Check out the all other folders finally.
svn co `echo $folders | sed "s|\<|$rpath|g"`
diretório

Alterar a fonte trabalhando. Copiar os comandos. Colar. Alterar URL apropriado e excluir padrão. Execute o comando.

Obrigado,

Não, ignorar é apenas para adicionar arquivos.
Você pode usar checkouts esparsas (se você usar svn 1.5)

Como alguns outros já mencionado, você pode apenas usar svn: propriedades externals e, em seguida, a opção --ignore-externals quando você check-out. Uma coisa a notar, no entanto, é que svn: externals não precisa necessariamente se referir a outro repositório. Ele pode ser uma referência a alguma outra pasta no mesmo repo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top