Tortoise SVN pastas _svn escondida
-
03-07-2019 - |
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.
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.
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:
- http://tortoisesvn.net/most-forgotten-feature (sobre o direito Clique em + menu de contexto de arrastar)
- http://tortoisesvn.net/node/343 (Sobre unversioning uma cópia svn de trabalho) . Se você usar esse método, eu pensar que seus arquivos sem versão permanecerá na pasta, mas eu não tentei ...
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.