Pergunta

Eles são especialmente irritante quando eu preciso fazer o upload para o servidor uma solução web.

Existe uma maneira de configurar o SVN para criar as pastas _svn fora da minha pasta de trabalho? Se não, qual é a melhor maneira de lidar com eles quando você precisa copiar apenas o código?

Update: Usando o comando "svn exportação" é problemático porque existem arquivos que não estão sob o controle de origem, mas necessário como .dll de, arquivos de dados XML ou arquivos de banco de dados e eles não serão exportados. Por isso, seria necessário para copiá-los manualmente lá em subdiretórios diferentes da cópia de trabalho de cada vez.

Foi útil?

Solução

Não é (atualmente) possível configurar o SVN (ou TortoiseSVN) para criar o .svn (ou _svn) diretórios fora da cópia de trabalho. Eu acredito que o SVN 1,6 roteiro inclui revisitar a biblioteca de cópia de trabalho. A capacidade de colocar os diretórios administrativos em outro lugar pode sair deste trabalho, mas estou especulando.

Você deve usar o comando "svn exportação" para criar uma cópia "limpa" de sua cópia de trabalho (ou seja, sem os diretórios _svn). Isso funciona a partir do cliente de linha de comando.

Se você estiver usando TortoiseSVN, você pode clicar com o botão direito sobre a cópia de trabalho, e escolha "Exportar ...". Isto irá pedir-lhe uma pasta para exportar os arquivos. Alternativamente, você pode botão direito e arrastar uma cópia de trabalho para uma pasta (que não é uma cópia de trabalho), e TortoiseSVN irá abrir um menu de contexto; Entre as opções são "SVN Exportar para aqui" e "SVN Exportar tudo para aqui", este último também exportadores arquivos não sob controle de versão .

Outras dicas

Use "svn exportação" para criar uma árvore de diretórios limpa.

implantação Robocopy ...

robocopy {source} {dest} /MIR /XD _svn /XD .svn

Em TortoiseSVN, você pode direito clique na cópia de trabalho e arraste-o para outro lugar. E quando o menu pop-up aparecer, selecione "SVN Export aqui". (Isso requer que todo o código na cópia de trabalho foi verificada desde a exportação será a partir de tronco e não a partir da cópia de trabalho)

Veja esses recursos para mais detalhes:

Se você usar um script nant para permitir a implantação para o servidor web tem um _svn e _svn arquivos / ** como exclui automáticas ao copiar. nant irá filtrar grandes quantidades de arquivos unwaanted ao copiar arquivos via sua tarefa de cópia incluindo:

  • ** / * ~
  • ** / # * #
  • ** /. # *
  • ** /% *%
  • ** / CVS
  • / CVS /
  • ** /. Cvsignore
  • ** /. Svn
  • /. Svn /
  • ** / _ svn
  • / _ svn /
  • ** / SCCS
  • / SCCS /
  • ** / vssver.scc
  • / _ vti_cnf /

Você pode ler mais sobre NANT em sua página do projeto aqui: NANT Início

+1 para a solução de Isak Savo.

E você pode fazer um XCOPY e excluir "/ svn" pastas:

XCOPY% 1% 1_deploy /EXCLUDE:C:\ExcludeSVN.txt / E / C / E / F / R / Y

Conteúdo de ExcludeSVN.txt:

/ _ svn

Na verdade, se você quiser upoload a um servidor web, o arquivo de exclusão lata contém muito mais:

  • .PDB
  • cs
  • .resx
  • .csproj
  • .sln
  • .webinfo
  • bak
  • .sql
  • .zip
  • .vspscc
  • .vssscc
  • .scc
  • \ Web.config

Atenção: Se você excluir arquivos cs, que você deu para voltar a copiar ficheiro.css depois

A maneira muito suja no Windows: Crie uma cópia de seu projeto, aberto Explorer, navegue até o diretório a cópia se encontra, e fazer uma pesquisa para tudo terminando com _svn. Uma vez que a pesquisa é feita, selecione tudo e pressione Delete.

Yuck! Mas funciona realmente também.

Nós usamos CruiseControl com robocopy a fim de criar uma cópia limpa do seu repositório.

 <exec>
        <executable>C:\Archivos de programa\Windows Resource Kits\Tools\robocopy.exe</executable>
        <buildArgs>E:\CruiseControl\yourproject\Code\trunk\ E:\wwwroot\yourproject *.* /E /XX /XA:H /XO /NDL /NC /NS /NP /XF "*.cache" "*.designer.cs" "*.sln" "*.msbuild" "*.csproj" "*.PDB" "*.user" "*.designer" /XD .svn App_Code obj Properties</buildArgs>
        <buildTimeoutSeconds>60</buildTimeoutSeconds>
        <successExitCodes>1,0</successExitCodes>
 </exec>

/ XF e / XD argumentos exclui os arquivos e os diretórios que não deseja fazer o upload para a produção.

Você pode encontrar mais informações sobre robocopy aqui .

Se você quiser excluir todas as pastas sub chamado .svn no Windows em seguida, criar arquivo de lote com este conteúdo:

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i"
)

salvá-lo em um arquivo del_All_Dot_SVN_Folders.cmd . Executá-lo. Seu feito.

Graças à http: // www .axelscript.com / 2008/03/11 /-delete-todos-svn-files-in windows /

Lembre-se o código acima tem .svn enquanto o código no link tem somente * svn assim o seu melhor para ter o .svn para não acidentalmente ter efeito indesejado.

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